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

errno !=EINTR かどうかを確認しています:どういう意味ですか?

多くのシステム コールは EINTR を報告します。 システムコールの進行中にシグナルが発生した場合のエラーコード。システムがシステム コールを自動的に再開できないため、実際にはエラーは発生しませんでした。このコーディング パターンは、これが発生したときにシステム コールを再試行するだけで、割り込みを無視します。

たとえば、プログラムが alarm() を使用すると、これが発生する可能性があります タイマーが切れたときに一部のコードを非同期で実行します。プログラムが write() を呼び出している間にタイムアウトが発生した場合 、システム コール (読み取り/書き込みなど) を再試行したいだけです。


ここでの回答は非常に優れており、内部の詳細を追加したいと思います:

<ブロック引用>

シグナルによって中断されたシステムコールは、中止して EINTR を返すことができます または SA_RESTART の場合にのみ自動的に再起動します sigaction(2)で指定

このタスクを担当するのは restart_block です システムコールを再起動するための情報と引数を追跡するために使用されます


write の man ページから :

<ブロック引用>

データが書き込まれる前にシグナルによって呼び出しが中断されました


Linux
  1. この警告はどういう意味ですか?

  2. brk() システムコールは何をしますか?

  3. ドットファイルでrcは何を意味しますか

  1. 「–」(二点鎖線)とはどういう意味ですか?

  2. Psの出力にはどういう意味がありますか?

  3. init は正確に何をしますか?

  1. `chown Root.root $ file`はどういう意味ですか?

  2. 「rmIsHashed」とはどういう意味ですか?

  3. この Linux コマンドの - はどういう意味ですか?