linux的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。
linux的system 函式詳解
linux的system 函式詳解 system 執行shell 命令 相關函式 fork,execve,waitpid,popen 表頭檔案 i nclude 定義函式 int system const char string 函式說明 system 會呼叫fork 產生子程序,由子程序來呼叫 b...
linux的system 函式詳解
linux的system 函式詳解 system 執行shell 命令 相關函式 fork,execve,waitpid,popen 表頭檔案 i nclude 定義函式 int system const char string 函式說明 system 會呼叫fork 產生子程序,由子程序來呼叫 b...
linux的system 函式詳解
linux的system 函式詳解 system 執行shell 命令 相關函式 fork,execve,waitpid,popen 表頭檔案 i nclude 定義函式 int system const char string 函式說明 system 會呼叫fork 產生子程序,由子程序來呼叫 b...