捕获从命令行返回的空输出,如果为空,则显示一些消息

时间:2010-02-03 08:46:28

标签: c stdio fgets

当脚本“ check.sh ”没有返回任何内容时,我需要在窗口中打印一些内容,这意味着当没有返回脚本输出时进行验证。

check.sh中没有任何内容。它只是一个空白的sh文件,在执行时不返回任何内容。我正在使用一个空的sh文件进行测试(我无法向您展示确切的脚本)。

当check.sh没有返回任何内容时,我想要打印的是一些消息,例如通过C“配置一些东西”。

我检查了缓冲区行(检查下面的模块),带有“\ n”,“\ r”,“\ 0”,NULL ..我不知道它在做什么时该脚本不返回任何内容

我将该模块称为 execute_command(“sh check.sh”)

这是我的模块

char *execute_command(char *command)
{
    FILE *fpipe;
    char line[1024]="";
    //char *line = (char*)malloc(1024*sizeof(char));
    int i =0;

    if ( !(fpipe = (FILE*)popen(command,"r")) )
    {  // If fpipe is NULL
        perror("Problems with pipe");
        exit(1);
    }

    while ( fgets( line, sizeof line, fpipe))
    {
        // printf("%s", line);
    }

    while(line[i]!='\0')
    {
        if(line[i]==' ')
        {
            line[i]=',';
        }
        i++;
    }
    pclose(fpipe);
    printf("%s",line); // This is where i want to know what the buffer has when the script returns nothing 
    return(line);
}

1 个答案:

答案 0 :(得分:0)

根据此 fgets 手册页,如果在读取任何字符之前发生文件结束,则返回NULL并且缓冲区内容保持不变。