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/

10-11 23:10