linuc語言用system呼叫帶引數

2021-12-16 19:22:26 字數 1947 閱讀 8642

1樓:斯坦恩貝格(北京)電子****

linux c system函式介紹:

system(執行shell 命令)

相關函式

fork,execve,waitpid,popen

表標頭檔案

#i nclude

定義函式

int system(const char * string);

函式說明

system()會呼叫fork()產生子程序,由子程序來呼叫/bin/sh-c string來執行引數string字串所代表的命令,此命》令執行完後隨即返回原呼叫的程序。在呼叫system()期間sigchld 訊號會被暫時擱置,sigint和sigquit 訊號則會被忽略。

返回值=-1:出現錯誤

=0:呼叫成功但是沒有出現子程序

>0:成功退出的子程序的id

如果system()在呼叫/bin/sh時失敗則返回127,其他失敗原因返回-1。若引數string為空指標(null),則返回非零值》。如果system()呼叫成功則最後會返回執行shell命令後的返回值,但是此返回值也有可能為 system()呼叫/bin/sh失敗所返回的127,因此最好能再檢查errno 來確認執行成功。

附加說明

在編寫具有suid/sgid許可權的程式時請勿使用system(),system()會繼承環境變數,通過環境變數可能會造成系統安全的問題。

範例#i nclude

main()

執行結果:

-rw-r--r-- 1 root root 705 sep 3 13 :52 /etc/passwd

-r--------- 1 root root 572 sep 2 15 :34 /etc/shado

例2:char tmp;

sprintf(tmp,"/bin/mount -t vfat %s /mnt/usb",dev);

system(tmp);

其中dev是/dev/sda1。

system函式的原始碼

#include

#include

#include

#include

int system(const char * cmdstring)

if((pid = fork())<0)

else if(pid = 0)

else}}

return status;

}那麼如何獲得system的返回值呢??

char buf[10];

char * ps="ps -ef|grep -c root";

file *ptr;

int i;

if((ptr = popen(ps, "r")) != null)

可以man下waitpid檢視下如何檢查status的值

int ret = system("ls -al /etc/passwd /etc/shadow");

if(wifsignaled(ret))

具體的這些巨集檢視man waitpid

2樓:

格式:system(字串)

例如:char my_cmd1="ls -l";

char my_cmd2="ls -l > abc.txt";

char my_cmd3="simser.exe 67";

system(my_cmd1);

system(my_cmd2);

system(my_cmd3);

---------------

simser.exe 67

67 是位置引數才可以這樣寫。(也就是 通過 simser.exe 的

main(int argc, char *argv) argv 傳入的)

system("simser","67"); -- wrong, system takes one parameter only.

為什麼我的語言欄不見了,調也調不出來

到控制面版 電擊語言區域圖示 進入後點高階 後面的你一看就會了 電腦的語言欄不見了輸入法出不來怎麼辦?回答親,非常高興為您解答這個問題 電腦語言輸入法不見了怎麼辦1.點選 開始 選單裡的設定 2.開啟 時間和語言 選中 區域和語言 3.點選 高階鍵盤設定 開啟 語言欄選項 4.選擇 停靠於工作列 儲...

C語言程式調不出來求幫助

出不了結果的原因是 for weishu 1 a 10 0 weishu 執行完畢之後a的值已經變了,以下判斷使用的a的值總是0.改為 int t a for weishu 1 t 10 0 weishu 這樣就可以出結果了。但是printf d a 輸出時混在一起看不清,可以改為 printf d...

用F調的笛子小工調的指法能不能吹出C調的曲子

首先f調笛子小工調吹出的自然是f調。因此不是c調。笛簫標調號,就是指它的小工調指法的調。不同的笛子,都是那麼幾種指法 除了七孔的低音大笛 比如c調笛子,用小工調就是c調的。雖然指法一樣但c調笛子比較大,孔距大,也費氣,對口風要求和f調也不同。而若用要用f調吹c調就可以用字調指法,最低音低音1最高音高...