在c語言中執行shell命令的方法:
1. system(shell_string);
該方法無法返回shell命令的輸出結果,只能返回返回值。
2. popen/fgets/fputs/pclose
該方法可以讀取shell命令的輸出結果和返回值,也可以向shell命令輸入引數。
#include file * popen ( const char * command , const char * type );
int pclose ( file * stream );
說明:
popen() 函式通過建立乙個管道,呼叫 fork 產生乙個子程序,執行乙個 shell 以
執行命令來開啟乙個程序。這個程序必須由 pclose() 函式關閉,而不是 fclose() 函式。pclose() 函式關閉標準 i/o 流,等待命令執行結束,然後返回 shell 的終止狀態。如果 shell 不能被執行,則 pclose() 返回的終止狀態與 shell 已執行 exit 一樣。
type 引數只能是讀或者寫中的一種,得到的返回值(標準 i/o 流)也具有和 type 相應的唯讀或只寫型別。如果 type 是 "r" 則檔案指標連線到 command 的標準輸出;如果 type 是 "w" 則檔案指標連線到 command 的標準輸入。
command 引數是乙個指向以 null 結束的 shell 命令字串的
指標。這行命令將被傳到 bin/sh 並使用-c 標誌,shell 將執行這個命令。
popen 的返回值是個標準 i/o 流,必須由
pclose 來終止。前面提到這個流是單向的。所以向這個流寫內容相當於寫入該命令的標準輸入;命令的標準輸出和呼叫
popen 的程序相同。與之相反的,從流中讀資料相當於讀取命令的標準輸出;命令的標準輸入和呼叫
popen 的程序相同。
返回值:
如果呼叫 fork() 或 pipe() 失敗,或者不能分配記憶體將返回null,否則返回標準 i/o 流。
popen 沒有為
記憶體分配失敗設定 errno 值。
如果呼叫 fork() 或 pipe() 時出現錯誤,errno 被設為相應的錯誤型別。
如果 type 引數不合法,errno將返回einval。
使用範例:
popen.c
#include void main()
//test write to shell
fd = popen("./popen_sh.sh", "w");
if(fd)
}
popen_sh.sh
#!/bin/sh
echo "please enter string:"
read input_string
echo "input_string=$input_string"
exit 12
C語言呼叫shell命令
在linux程式開發中經常需要呼叫一些現有的shell介面,比如ifconfig ping等。通過以下程式就可以直接呼叫,雖然和 實現相比效率較低,但是 編寫較為簡單。c 函式功能 popen 會呼叫fork 產生子程序,然後從子程序中呼叫 bin sh c來執行引數command的指令。引數typ...
python 呼叫 shell 命令方法
python呼叫shell命令方法 缺點 不能獲取返回值 要得到命令的輸出內容,只需再呼叫下read 或readlines 等 例 a os.popen cmd read 此模組主要有如下方法 commands.getstatusoutput cmd 返回 status,output command...
如何在C語言中呼叫shell命令
1 system 執行shell 命令 相關函式 fork,execve,waitpid,popen 表頭檔案 include 定義函式 int system const char string 函式說明 system 會呼叫fork 產生子程序,由子程序來呼叫 bin sh c string來執行...