GNU/Linux >> Linux の 問題 >  >> Linux

EINTR をチェックして関数呼び出しを繰り返すのはいつですか?

アプリケーションのイベント駆動型ですか? (メインループに select()/epoll_wait() が含まれていることを意味します 呼び出します)

イベント ドリブン アプリケーションでは、すべてのシグナルをブロックし、pselect()/epoll_pwait() の間のみブロックを解除できます。 電話。このようにして、コードの残りの部分で EINTR を処理する必要がなくなります。


sigaction を参照してください:http://pubs.opengroup.org/onlinepubs/009695399/functions/sigaction.html

SA_RESTART
  This flag affects the behavior of interruptible functions; that is, those 
  specified to fail with errno set to EINTR. If set, and a function specified 
  as interruptible is interrupted by this signal, the function shall restart 
  and shall not fail with EINTR unless otherwise specified. If the flag is not 
  set, interruptible functions interrupted by this signal shall fail with errno 
  set to EINTR.

デフォルトでは、SA_RESTART の動作があるため、シグナルをいじらない場合、EINTR について心配する必要はありません。


Linux
  1. WindowsServer2016および2019でWindowsUpdateを確認する

  2. Bash で関数を作成して呼び出す方法

  3. 読み取り関数呼び出しでタイムアウトを実装するには?

  1. K&R2 の第 1 章の最長行の例をコンパイルすると、getline エラーの競合する型が発生するのはなぜですか?

  2. ターミナルで現在の日付と時刻を取得し、ターミナルでカスタム コマンドを設定するにはどうすればよいですか?

  3. システムコール fork() と execv 関数

  1. OSとLinuxのバージョンを確認する方法

  2. コンソールで大きなファイルをチェックする方法

  3. Bashの完了が代替案を循環することは可能ですか?