POSIXシステムコールのブロック動作を記述する参考文書がありますか?プロセスをブロックするPOSIXシステムコールはどれですか?
これまでのところ、私のヒューリスティックは、EINTR
で失敗する可能性のある機能をブロックする可能性があるとフラグを立てていましたか?それは必要十分条件ですか?
POSIXシステムコールのブロック動作を記述する参考文書がありますか?プロセスをブロックするPOSIXシステムコールはどれですか?
これまでのところ、私のヒューリスティックは、EINTR
で失敗する可能性のある機能をブロックする可能性があるとフラグを立てていましたか?それは必要十分条件ですか?
私の知る限りでは、ちょうどman
ページを見て、常識を使いましょう。コールがEINTRを指定していない場合でも、EINTRが何をするかを考えてください。私は間違っているかもしれませんが、POSIXライブラリ内のすべての呼び出しがデフォルトでブロックされていて、非ブロッキングモードでのみ実行されるように思われます(さまざまなフラグによって)が、ブロックされていない単一の呼び出しは見ていませんデフォルトでは(だが、はブロックされません)。
「POSIXライブラリのすべての呼び出しがデフォルトでブロックされます」というあなたの主張の反例として、 'getpid()'システムコールはブロックしません。期間。 –
'man'ページでは十分な情報が得られず、私の常識を信頼しません。例は、 'socket(2)'、 'shutdown(2)'、 'fnctl(2)'コマンドF_SETFLなどです。これが私にこれを伝える包括的な文書を持っていたいのです。 –
@JonathanLeffler:しかし、どちらも非同期ではありません。それは返されるジョブである値を返します。つまり、ノンブロッキングではありません。 'getpid()'を呼び出してから他のコードを実行し、後で結果を得るようなものではありません。 – Linuxios
私はリストを持っていませんが、それは必要条件ではないと思われます。例えば、 'unlink(2)'はエラーとして 'EINTR'を指定しませんが、(ディスクアクセス時に)ブロックする可能性があります。おそらくそれを好む多くの人がいるでしょう。 – Celada