Я пытаюсь прочитать файл /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()
, и она тоже выглядит отлично.
Может кто-нибудь помочь мне понять проблему, стоящую за этим?