[英]segmentation fault in fgets, trying to run shell command in c program
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出现段错误? 我在管道内运行shell命令,其输出定向在文件中。 但是当我尝试回读时,存在段错误
我找到了解决方案。 我做了一个strcat,这是原因。 我将finalOutputCmd [1000]的大小增加到50,000。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.