OKWAVEのAI「あい」が美容・健康の悩みに最適な回答をご提案!
-PR-
解決
済み

SIGIOについて

  • 困ってます
  • 質問No.224902
  • 閲覧数676
  • ありがとう数1
  • 気になる数0
  • 回答数2
  • コメント数0

お礼率 62% (5/8)

SIGIOの解説をみると「I/Oが使用可能になった」との記述がありますが
これは例えばシリアルポートに当てはめると受信完了と送信可能の場合に発行
されるシグナルなのでしょうか?
通報する
  • 回答数2
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

質問者が選んだベストアンサー

  • 回答No.2
レベル13

ベストアンサー率 34% (574/1662)

>実はsigactionでSIGIO設定しfcntl(fd, F_SETOWN, getpid());で
>シリアルポートのデータ受信を認識しようとおもっているのですが
>もっと良い方法があるのでしょうか?

具体的なことがわからないので正確な判断はできませんが、
特に問題は無いと思いますが。
ただ、自分ではまだ使ったことがありませんので、
未確認です(^^;;

ただ、プログラム上というか、手順というか、その辺を試したり、確認したりする必要はあると思います。
受信完了がどういう意味かによりますが、
たとえば送信側が1024バイトを送信した場合は、
SIGIOが発生しても、その時に読み込めるデータは
おそらく1024バイトではありません。
場合によれば、1バイト受信しただけでSIGIOが発生するかも知れません。
それでいいかどうかです。

こういう場合に必ず1024バイト単位で処理をしたいなら、
別なプロセスなりスレッドなりでwait I/Oで
1024バイト読み込み、完了した時点で処理プロセスへ
シグナルなりなんなりで通知するというような
処理にすると思います。
こういう感じのプログラムなら何度か作ってます。
-PR-
-PR-

その他の回答 (全1件)

  • 回答No.1
レベル13

ベストアンサー率 34% (574/1662)

受信完了という判断はできないと思うので、 受信データがあるという意味でしょう。 また、通常このシグナルは出ません。 http://www.linux.or.jp/JM/html/LDP_man-pages/man2/fcntl.2.html http://www.linux.or.jp/JM/html/LDP_man-pages/man7/signal.7.html ...続きを読む
受信完了という判断はできないと思うので、
受信データがあるという意味でしょう。
また、通常このシグナルは出ません。
http://www.linux.or.jp/JM/html/LDP_man-pages/man2/fcntl.2.html
http://www.linux.or.jp/JM/html/LDP_man-pages/man7/signal.7.html
補足コメント
shizuoka7

お礼率 62% (5/8)

実はsigactionでSIGIO設定しfcntl(fd, F_SETOWN, getpid());で
シリアルポートのデータ受信を認識しようとおもっているのですが
もっと良い方法があるのでしょうか?
投稿日時 - 2002-02-26 08:55:20
このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
このQ&Aにこう思った!同じようなことあった!感想や体験を書こう
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ