Cプログラムでソケットを開き、fstat
それを実行すると、プライマリデバイス番号とセカンダリデバイス番号が印刷されます。私のメジャー番号は0、マイナー番号は8です。確認するLinuxカーネルドキュメント、キーデバイス番号0が「名前のないデバイス」用に予約されていることを確認しました。
もしそうなら、これはLinuxの保証ですか?つまり、ソケットは常に週番号0にありますか?それでは、10進数8も保証されますか?ヘッダーにこれらの値を定義するマクロがありますか?
これは私のコードです。
#include <stdio.h>
#include <unistd.h>
#include <sys/socket.h>
#include <sys/stat.h>
#include <sys/sysmacros.h>
#include <sys/types.h>
int main() {
int ret = 0, sock;
struct stat fs;
sock = socket(AF_INET, SOCK_STREAM, 0);
if ( sock < 0 ) {
perror("socket");
return 1;
}
if ( fstat(sock, &fs) != 0 ) {
perror("fstat");
ret = 1;
}
else {
printf("Socket is on device %u:%u\n", major(fs.st_dev), minor(fs.st_dev));
}
close(sock);
return ret;
}