-
system()
鎖定
- 外文名
- system()
- 屬 性
- 函數
system()函數説明
system()會調用fork()產生子進程, 由子進程來調用/bin/sh-c string 來執行參數string 字符串所代表的命令, 此命令執行完後隨即返回原調用的進程. 在調用system()期間SIGCHLD 信號會被暫時擱置,SIGINT 和SIGQUIT 信號則會被忽略.
system()返回值
1、如果 system()在調用/bin/sh 時失敗則返回127, 其他失敗原因返回-1.。
3、如果system()調用成功則最後會返回執行shell 命令後的返回值, 但是此返回值也有可能為system()調用/bin/sh 失敗所返回的127, 因此最好能再檢查errno 來確認執行成功.
system()附加説明
在編寫具有 SUID/SGID 權限的程序時請勿使用system(), system()會繼承環境變量, 通過環境變量可能會造成系統安全的問題.
例如:
以下是C語言的程序
#include <stdio.h> #include <stdlib.h> int main(void) { system("ls -al /etc/passwd /etc/shadow"); return 0; }
以下是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++的程序
#include <iostream> #include <cstdlib> using namespace std; int main(void) { cout << "Hello world" << endl; system ("pause"); system ("cls"); return 0; }
- 參考資料
-
- 1. system()—執行shell命令 .c語言中文網[引用日期2014-02-19]
- 詞條統計
-
- 瀏覽次數:次
- 編輯次數:14次歷史版本
- 最近更新: 青青的麦田year