すべてのタイプのbsdスタイルのソケットエラーのリストはどこにありますか?
1244 次
4 に答える
6
ドキュメントでは?たとえば、connect()については、以下を参照してください。
% man connect
...
ECONNREFUSED
No-one listening on the remote address.
EISCONN
The socket is already connected.
ENETUNREACH
Network is unreachable.
于 2008-10-05T16:53:48.467 に答える
2
エラーコードのリスト(およびその意味の一般的な説明)は、各機能(たとえば、connectなど)のOpenGroupのページにもあります。
于 2008-10-05T16:25:41.830 に答える
1
考えられるすべてのerrnoまたはそれらに関するいくつかのコメントを知りたい場合は、ヘッダーファイルを確認できます。Linuxシステムでは、次の場所にあります。
- /usr/include/asm-generic/errno-base.h
#ifndef _ASM_GENERIC_ERRNO_BASE_H #define _ASM_GENERIC_ERRNO_BASE_H #define EPERM 1/*操作は許可されていません*/ #define ENOENT 2/*そのようなファイルやディレクトリはありません*/ #define ESRCH 3/*そのようなプロセスはありません*/ #define EINTR 4/*中断されたシステムコール*/ #define EIO 5 / * I/Oエラー*/ #define ENXIO 6/*そのようなデバイスやアドレスはありません*/ #define E2BIG 7/*引数リストが長すぎます*/ #define ENOEXEC 8 /*Execフォーマットエラー*/ #define EBADF 9/*不正なファイル番号*/ #define ECHILD 10/*子プロセスなし*/ #define EAGAIN 11/*再試行*/ ..。
- /usr/include/asm-generic/errno.h
#ifndef _ASM_GENERIC_ERRNO_H #define _ASM_GENERIC_ERRNO_H #含む #define EDEADLK 35/*リソースのデッドロックが発生します*/ #define ENAMETOOLONG 36/*ファイル名が長すぎます*/ #define ENOLCK 37/*使用可能なレコードロックはありません*/ #define ENOSYS 38/*関数は実装されていません*/ #define ENOTEMPTY 39/*ディレクトリが空ではありません*/ #define ELOOP 40/*検出されたシンボリックリンクが多すぎます*/ #define EWOULDBLOCK EAGAIN/*操作がブロックされます*/ ..。
開発マンページをインストールしてmansocketまたはmanconnectを試してみるときに、socket()やconnect()などの呼び出しがどのerrnoを返すかを知りたい場合は、
于 2008-10-05T17:06:19.970 に答える
1
多くの関数はerrno
失敗時に設定されます。自分で調べてエラー番号を文字列に変換する代わりに、 をerrno.h
呼び出す方がはるかに優れていますperror
。
perror
現在errno
の に対応するメッセージをstderr
オプションのプレフィックス付きで出力します。
使用例:
if (connect())
{
perror("connect() failed in function foo");
...
}
perror
以外の場所で使用するために文字列をキャプチャしたい場合は、友人が呼び出されstrerror
、strerror_r
役立つ可能性がありますstderr
。
于 2008-10-06T08:02:25.933 に答える