繁体   English   中英

fgets中的分段错误,尝试在c程序中运行shell命令

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM