OKWAVEパソコン版の推奨環境変更のお知らせ
  • 締切済み

C言語で、文字とか入力されなくても実行を続けたい

現在簡単なゲームをunix系のOSのC言語でつくってますが なにも入力されなくても停止せず実行を続けられる getcharのような関数はないのでしょうか? windows系のOSにはcons.hヘッダーあたりに そんな関数あったような気がするのですが。。。 普通のgetcharだと、文字が入力されるまで(enter押されるまで) そこで実行が一時中断されてしまい リアルタイムで動くプログラムができないのですが。。。

みんなの回答

  • MovingWalk
  • ベストアンサー率43% (2233/5098)
回答No.6

kbhit()相当の関数を作ればいいのですが... こちらをよく読むと参考になるかもしれません。 http://www.nishimoto-site.net/archiver/fj/os/linux/200210/msg00089.html

参考URL:
http://www.nishimoto-site.net/archiver/fj/os/linux/200210/msg00089.html
winterofmeei
質問者

お礼

回答ありがとうございます これらのページを参照してみようとおもいます

  • ranx
  • ベストアンサー率24% (357/1463)
回答No.5

再びNo.4です。 前の回答中に書いたCBREAKモードは、Enterキーの入力を 待たずにキー入力を行う機能でした。 今回は関係ありませんので、無視して下さい。

  • ranx
  • ベストアンサー率24% (357/1463)
回答No.4

一般的には、マルチスレッドにする必要は無いと思います。 No.1さんのご指摘通り、ioctl()を使ってrawモード(CBREAKモードというのもあったような気が...) にすれば、getchar()が直ちに-1を返すようにできると思います。 ただ、お使いのUNIXやデバイスによって、制約はあるかもしれません。

winterofmeei
質問者

お礼

回答ありがとうございます ioctlを調べて使ってみようと思います

  • garyu77
  • ベストアンサー率45% (30/66)
回答No.3

イマイチ意味が分からないのですが。。。 consio.hのgetch、getche辺りの話をしてるのかな? それとも入力待ち時間中も別処理をしたいって事ですかね? そうなると通常のProgramでは一本の動きしか出来ませんよ。 あくまで【通常】ですけどね。 入力待ちの時に別処理をしたいのであれば、プロセス管理とかしないと無理かなぁ… プロセス管理を行って、処理Aをさせている最中に処理Bするって事になるとforkとか....

winterofmeei
質問者

補足

実行が停止しないgetcharみたいな関数とは windowsのconsio.hのgetchとかのことです うろ覚えであいまいな書き方になってました… 例えばシューティングゲームを作るとしたら、 プレイヤーが何にも入力してなくても ゲームの処理は実行されてなければなりません。 でも、C言語標準のgetchar関数では 入力が終了するまでプログラムの実行が 停止されてしまうので、 そうならない関数や方法を探してるのです。 あと、forkとかできれば使いたくはないのですが… 一つのプログラムだけでできないのでしょうか…

  • neKo_deux
  • ベストアンサー率44% (5541/12319)
回答No.2

原始的な方法ですと… プログラムA(実際の処理) ファイル"test.txt"を開く。 ファイルに文字が入力されていれば何らかの処理を行い、空のファイルを上書きする。 ファイルを閉じる。 リアルタイムの処理を実施。 繰り返し。 プログラムB(入力処理) getcharで入力を待つ。 入力を受け付けたらファイル"test.txt"を開いて何か書き込む。 繰り返し。 の2本立てで動作するとか。 (上の仕様だとイロイロ問題が起きて、それはそれで面白いのですが…) -- 最近の普通の方法ですと、マルチスレッドとか、スレッド同期とか、そういうキーワードで情報収集してみては?

winterofmeei
質問者

お礼

回答ありがとうございます。 複数のプログラムを一度に実行するつもりもなく マルチスレッド等を用いるつもりもありませんでしたが こういう方法も試してみようと思います。

回答No.1

はじめまして。 Linuxに関してしか知らないので、その点はご了承ください。 Googleで「stty」、「Linux」、「rawモード」をキーワードにして検索したところ、参考URLのページを見つけました。 MLの過去ログですので、その前後を参照していただければ、もう少し詳細が分かるかもしれません。 ・・・と、最近こればっかりですので、もう少し。 「Linux システムコール」(塚越 一雄 著/技術評論社  ISBN4-7741-1031-0)という本があるのですが、この本にも関連する話題が載っています。 システムコールについて書かれた本なのですが、私が手に取った本の中では、一番読みやすくまとめられていました。 他の情報源としては、JFやJMが挙げられるかと思います。 日本語で情報を得ることができるので便利です。 JF → http://www.linux.or.jp/JF/ JM → http://www.linux.or.jp/JM/ 長文・駄文、失礼致しました。

参考URL:
http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/~poffice/mail/linux-users/51646?help
winterofmeei
質問者

お礼

回答ありがとうございます 参考URLを参照してみようと思います。

関連するQ&A

専門家に質問してみよう