Получить информацию о файле с c в linux - PullRequest
0 голосов
/ 17 января 2020

Когда я запускаю:

ls -l /proc/123/fd/80

Я вижу, например:

89-> socket:[38676]

Как я могу получить эту информацию в C? Как я могу знать, что это fd указывает на сокет / трубу и получает число в скобках (38676 между [ ])

Кстати, число в скобках равно размеру гнездо буфера?

1 Ответ

0 голосов
/ 17 января 2020

man fstat предоставит вам всю необходимую документацию.

На странице руководства приведен пример, который вы можете легко адаптировать:

#include <sys/types.h>
#include <sys/stat.h>
#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
    struct stat sb;

    if (argc != 2) {
        fprintf(stderr, "Usage: %s <pathname>\n", argv[0]);
        exit(EXIT_FAILURE);
    }

    if (stat(argv[1], &sb) == -1) {
        perror("stat");
        exit(EXIT_FAILURE);
    }

    if (S_IFSOCK != (sb.st_mode & S_IFMT)) {
        printf("Not a socket.\n");
        exit(EXIT_FAILURE);
    }

    printf("socket: %ld\n", (long) sb.st_ino);

    exit(EXIT_SUCCESS);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...