システムコール失敗モードのテーブルまたはリストがあるかどうかを知りたいです。いくつかの例:システムメモリ不足のためにシャットダウン()が失敗しますか?システムが開いているファイルの最大数に達したため、open()は失敗しますか?システムコールは単にタイムアウトしますか?システムコールエラーでさまざまなハードウェアエラーはどのように見えますか?
ありがとうございます!
答え1
推測できるように、すべてのシステムコールですべてのエラーが発生するわけではありません。
最初から始める場合は、/usr/include/errno.h
「EPERM」や「EINTR」などのマニフェスト定数を追跡できます。以下で見つけました。
/usr/include/asm-generic/errno-base.h
そして
/usr/include/asm-generic/errno.h
しかし、私が見るにはlibcのディストリビューションやバージョンに若干の変更があるかもしれません。
Linuxは、特定のシステムコールがそのシステムコールのマニュアルページに表示される可能性のあるエラーを処理するのに非常に熟練しているようですman 2 read
。man 2 socket
これは、伝統的にまだ存在する可能性があるさまざまなUnixバージョンの場合には該当しません。私は最新のUnix状況を確認するために* BSDシステムにアクセスできません。