захватывает пустой вывод, возвращаемый из командной строки, и отображает некоторое сообщение, если оно пустое - PullRequest
0 голосов
/ 03 февраля 2010

Мне нужно что-то напечатать в моем окне, когда скрипт " check.sh " ничего не возвращает, означает проверку, когда не возвращен вывод из скрипта.

check.sh ничего не содержит в нем. Это просто пустой sh-файл, который ничего не возвращает при выполнении. Я тестирую с пустым файлом sh (я не могу показать вам точный сценарий, поэтому).

То, что я хочу напечатать, - это какое-то сообщение типа «настроить что-то» через C, когда check.sh ничего не возвращает.

Я проверил строку буфера (проверьте в модуле ниже) с помощью "\ 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 голосов
/ 03 февраля 2010

Согласно этой fgets справочной странице, если конец файла встречается до того, как какие-либо символы прочитаны, он возвращает NULL и содержимое буфера остается неизменным.

...