2011-04-12 77 views
0

我想在我的C程序中使用system()命令運行腳本。在main()裏面,我運行腳本並返回結果。我怎樣才能把腳本的結果放在一些字符串中並檢查條件?我知道我可以用文件做,但想知道是否可以把結果放入一個字符串中。輸出重定向在Unix和C

樣品將是這樣的:

main() 
{ 
    system("my_script_sh"); // How can I get the result of the my_script_sh 
} 

回答

5

您不能使用系統命令。做的最好的事情是用popen

FILE *stream; 
    char buffer[150];  
    stream = popen("ls", "r"); 
    while (fgets(buffer, 150, stream) != NULL){ 
     // Copy the buffer to your output string etc. 
    } 

    pclose(stream); 
+0

感謝。將嘗試popen。 – user629034 2011-04-12 18:49:04

0

使用popen()和讀取流到一個char *緩衝。

0

那麼做是採取system("my_script_sh")你的計劃,並從有管殼調用程序的最簡單的事情 - 如:my_script_sh | ./your_c_program,然後你的C程序只是從stdin(文件描述符0)中讀取數據。

如果這是不可能的,那麼看看man 3 popen。基本上,您使用popen而不是system,它爲您提供了一個文件句柄,您可以從中讀取該句柄以獲取程序的輸出。

這裏有幾個環節,可能是有用的: