2010-02-03 42 views
0

當腳本「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); 
} 
+0

請改善您的問題的格式。特別是,更好地縮進你的代碼:因爲它是不可理解的。否則人們(例如我)不會幫助你。 – 2010-02-03 08:50:54

+0

請留下關於解決方案的說明,你能解決它嗎? – spikey 2012-05-03 16:22:47

回答

0

根據這一fgets手冊頁,如果在讀取任何字符之前發生文件結束,則返回NULL,並且緩衝區內容保持不變。