gpt4 book ai didi

c - LINUX C 编程中的文件路径

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:41:25 26 4
gpt4 key购买 nike

美好的一天。我正在创建一个多线程程序,它将读取有关您将使用 PID 号指向的进程的基本日期。其中一个线程应该从“status”文件中读取信息。此文件位于 /proc/NUMBER_PID/status
所以我写了这个pthread函数。但我仍然遇到错误。谁能指出问题出在哪里?

pthread_create(&pth[1],NULL,odczyt,&pid);
.....
##define NUMBER arg
void *odczyt(void*arg)
{
char*bufor;
FILE *plik;
plik=fopen("/proc/NUMBER/status","r");
if(plik==0){
perror("Error: Blad otwarcia pliku");
exit(1);
}
while((fgets(bufor,200,plik))!=0)
{
printf("%s",bufor);
}
fclose(plik);
free(bufor);
}

最佳答案

你的代码有很多问题,

##define NUMBER arg
/* ^^^^^^^^^^^^^^^^^^^ what is this define? */

void *odczyt(void*arg)
{
char*bufor;
/*^^^^^^^^^^^^ this is never malloc'd */

FILE *plik;
plik=fopen("/proc/NUMBER/status","r");
/* you never use ^^^^^^^^ the pid */

您没有用 PID 替换数字

    if(plik==0){
perror("Error: Blad otwarcia pliku");
exit(1);
}
while((fgets(bufor,200,plik))!=0)
{
printf("%s",bufor);
}
fclose(plik);
free(bufor);
/* ^^^^^^^^^^^ free'ing something you never malloc'd */
}

尝试:

void *odczyt(void*arg)
{
char bufor[256];
FILE *plik;
char statusFile[256];
snprintf(statusFile, sizeof(statusFile), "/proc/%u/status", *(pid_t *)arg));
plik=fopen(filename,"r");
if(!plik){
perror("Error: Blad otwarcia pliku");
exit(1);
}
while((fgets(bufor, sizeof(bufor),plik))!=0)
{
printf("%s",bufor);
}
fclose(plik);
}

关于c - LINUX C 编程中的文件路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42329666/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com