函式說明
system()會調用fork()產生子進程, 由子進程來調用/bin/sh-c string 來執行參數string 字元串所代表的命令, 此命令執行完後隨即返回原調用的進程. 在調用system()期間SIGCHLD 信號會被暫時擱置,SIGINT 和SIGQUIT 信號則會被忽略.
返回值
:
1、如果 system()在調用/bin/sh 時失敗則返回127, 其他失敗原因返回-1.。
2、若參數string 為空指針(NULL), 則返回非零值.
3、如果system()調用成功則最後會返回執行shell 命令後的返回值, 但是此返回值也有可能為system()調用/bin/sh 失敗所返回的127, 因此最好能再檢查errno 來確認執行成功.
附加說明
:在編寫具有 SUID/SGID 許可權的程式時請勿使用system(), system()會繼承環境變數, 通過環境變數可能會造成系統安全的問題.
例如:C
運行結果
-rw-r--r-- 1 root root 705 Sep 3 13 :52 /etc/passwd
-r--------- 1 root root 572 Sep 2 15 :34 /etc/shadow
C++