2

Linux 提供のヘッダー ファイル「/usr/include/linux/socket.h」には、サポートされているアドレス ファミリとプロトコル ファミリの定義が含まれています。

/* Supported address families. */
#define AF_UNSPEC       0
....

/* Protocol families, same as address families. */
#define PF_UNSPEC       AF_UNSPEC
...

しかし、なぜソケットの型を定義しないのでしょうか?

「/usr/include/bits/socket.h」で定義を見つけることができます

enum sock_type {
    SOCK_DGRAM  = 1,
    SOCK_STREAM = 2,
    SOCK_RAW    = 3,
    SOCK_RDM    = 4,
    SOCK_SEQPACKET  = 5,
    SOCK_DCCP   = 6,
    SOCK_PACKET = 10,
};

Linux が提供するヘッダー ファイルでこれらが定義されていないのはなぜでしょうか。

4

1 に答える 1

5

ユーザースペースプログラムは以下を使用する必要があります。

#include <sys/socket.h>

注意:sys、ではありませんlinux

これにより#include、適切な低レベルのヘッダーファイルが作成されます。

一部の定義が含まれ<bits/socket.h>、一部が含まれているという事実は、<linux/socket.h>単なる実装の詳細です。

于 2012-04-23T10:08:48.113 に答える