dev_list* somefunc()
{
FILE* ExecutionResult;
int deviceCount;
int deviceIndex[50];
char cmdExecute[50],finalOutputCmd[1000],outputCmd[100];
int i;
int bytes = 0;
char* temp = 0;
sprintf(cmdExecute,"%s\n" "ls -l");
printf("command = %s\n",cmdExecute);
ExecutionResult = popen(cmdExecute,"r");
memset(finalOutputCmd,0,sizeof(finalOutputCmd));
deviceCount = 0;
deviceIndex[deviceCount] = 0;
if ( ExecutionResult )
{
if (fgets(outputCmd, sizeof(outputCmd)-1, ExecutionResult) == NULL) {
printf("no bytes read\n");
bytes += (sizeof(outputCmd)-1);
}
}
printf("hello %d,%d\n",i,bytes);
return 0; //deviceList;
}
为什么fgets上有seg错误?我在管道中运行一个shell命令,其输出指向一个文件。但当我试图回读时,有段错误
最佳答案
我找到了解决办法。我做了一个手术,这是原因。我把finalOutputCmd[1000]的大小增加到50000。
关于c - fgets中的段错误,尝试在c程序中运行shell命令,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39754045/