簡體   English   中英

捕獲程序C中的Shell腳本輸出

[英]Catching shell script output in program c

我有C程序(program.c),它調用外殼程序腳本(command.sh)。 command.sh返回輸出(密碼),我需要在我的program.c中獲取此輸出。 使用system(command); ,我無法掌握輸出。 C中還有其他方法可以解決我的問題嗎?

不是純C語言。您需要POSIX。 特別是popen函數。

該規范有一個很好的例子,您可以只復制1:1 http://pubs.opengroup.org/onlinepubs/009604499/functions/popen.html

聽起來好像您害怕使用庫。 請嘗試使用庫,它們與Shell工具一樣在Unix中一樣重要。

在純C語言中(好吧...忽略system()調用的內容),您可以將Shell腳本輸出重定向到一個文件,然后讀取該文件。

system("whatever > file");
handle = fopen("file", "r");
/* if ok use handle */
fclose(handle);

您應該使用popen打開管道,但這聽起來很乏味。 調用shell腳本輸入密碼的AC程序。

您可以按照上面的建議使用popen() ,但請注意,在這種情況下,您無法控制創建的進程(例如,您將無法殺死它),您也將不知道其退出狀態。

我建議使用經典的pipe / fork / exec組合。 然后,您將知道子進程的pid,這樣便可以發送信號,還可以使用pipe()重定向進程標准輸出,以便可以在父進程中輕松讀取它。 例如,您可以看到我接受的popen()替代答案。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM