Linux:套接字是否始终在设备 00:08 上?

Linux:套接字是否始终在设备 00:08 上?

在 C 程序中打开套接字后,我运行fstat它并打印出主要和次要设备号。我的主编号为 0,次编号为 8。查看Linux 内核文档,我看到主设备号 0 是为“未命名设备”保留的。

那么,这是Linux的保证吗?也就是说,套接字将始终位于主设备号 0 上吗?如果是这样,小数 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;
}

相关内容