fread (): невозможно прочитать файл для / proc / $ pid / status - PullRequest
0 голосов
/ 09 октября 2018

Я пытаюсь прочитать файл /proc/$pid/status в функции.Я могу открыть файл, используя fopen, и когда я читаю его, используя fread(), я получаю Segmentation fault (core dumped).

Функция:

void getContextSwitches() {
    FILE* fp;

    int pid = getpid();
    char spid[10];
    snprintf(spid, 10, "%d", pid);

    char buffer[3000];
    size_t bytesRead;

    printf("\nPid of the process is: %s", spid);

    char path[50];
    path[0] = '\0';
    strcat(path, "/proc/");
    strcat(path, spid);
    strcat(path, "/status");

    printf("\nPath: %s\n", path);

    fp = getFile(fp, path);

    if(NULL == fp) {
        printf("File status is not read\n");
        exit(1);
    }
    printf("File pointer not null");
    printf("size of buffer: %ld", sizeof(buffer));
    bytesRead = fread(buffer, 1, sizeof(buffer), fp);
    printf("\nIt's not coming here");
    fclose(fp);
}

И вот вывод, который яполучить:

Pid of the process is: 85244
Path: /proc/85244/status

File pointer not null
Size of buffer: 3000
Segmentation fault (core dumped)

Размер buffer был выделен правильно, а также fp не является нулевым.У меня есть аналогичные функции в других областях моего кода, и они работают нормально.Я проверил подпись fread(), и она тоже выглядит отлично.

Может кто-нибудь помочь мне понять проблему, стоящую за этим?

1 Ответ

0 голосов
/ 09 октября 2018

Проблема в вашей функции getFile().Остальная часть кода в порядке.

Я подозреваю, что вы возвращаете недопустимый FILE* из getFile().

...