system函式呼叫

2022-05-08 13:27:10 字數 1198 閱讀 3561

**:

相關函式 

fork,execve,waitpid,popen 

表頭檔案 

#include

定義函式 

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()函式呼叫Linux指令碼

system 函式在函式庫中,通過他可以呼叫linux中的指令碼。具體使用可以用 man system來看。這個函式就乙個引數,就是你要執行的命令的字串。比如,呼叫的指令碼位於 home usr joker test.sh,那麼就可以這樣在c c 中呼叫system home usr joker t...

使用system()函式呼叫Linux指令碼

system 函式在函式庫中,通過他可以呼叫linux中的指令碼。具體使用可以用 man system來看。這個函式就乙個引數,就是你要執行的命令的字串。比如,呼叫的指令碼位於 home usr joker test.sh,那麼就可以這樣在c c 中呼叫system home usr joker t...

system 可以呼叫的 DOS 函式 總結

system 函式 是可以呼叫一些dos命令,比如 system cls 清屏,等於在dos上使用cls命令 下面列出常用的dos命令,都可以用system函式呼叫 assoc 顯示或修改副檔名關聯。at 計畫在計算機上執行的命令和程式。attrib 顯示或更改檔案屬性。break 設定或清除擴充套...