1、system()函式
相關函式:fork,execve,waipid,popen
表頭檔案:#include
函式定義:int system(const char *string)
返回值:
如果fork()失敗 返回-1:出現錯誤
如果exec()失敗,表示不能執行shell,返回值相當於shell執行了exit(127)
如果執行成功則返回子shell的終止狀態
如果system()在呼叫/bin/sh時失敗則返回127,其他失敗原因返回-1。若引數string為空指標(null),則返回非零值》;。如果system()呼叫成功則最後會返回執行shell命令後的返回值,但是此返回值也有可能為 system()呼叫/bin/sh失敗所返回的127,因此最好能再檢查errno 來確認執行成功
system()會呼叫fork()產生子程序,由子程序來呼叫/bin/sh-c string來執行引數string字串鎖代表的命令,此命令執行後隨即返回原呼叫的程序,在呼叫system()期間,sigchild訊號會被暫時擱置,sigint和sigquit訊號會被忽略。
system與exec的區別:
(1)system與exec都可執行程序外的命令,但是system是在原程序上新開闢乙個程序,而exec是用新程序(命令)覆蓋了原來的程序。
(2)二者都會產生返回值,system的返回值不影響原程序,exec的返回值影響原程序。
2、程序控制wait3和wait4
wait3和wait4提供的功能比wait、waitpid和waitid所提供的功能要多乙個,這與附加引數rusage有關。該引數要求核心返回由終止程序及其所有子程序使用的資源彙總。
兩個函式返回值:若成功返回程序id,若出錯則返回-1
資源統計資訊包括使用者cpu時間總量、系統cpu時間總量、頁面出錯次數、接收到訊號的次數等。有關細節參閱getrusage(2)手冊頁。
3、wtermsig巨集測試
wtermsig:測試作用通過訊號來決定那個子執行緒被退出。
命令格式:
#include int wtermsig(int status);與wait()和呼叫情況:
waitpid()函式結合使用。
返回值:
wtermsig巨集測試被執行後,若成功返回被終止的子程序的訊號值。返回的訊號值被定義在 sys/signals.h標頭檔案中。
from :
linux下c 程式設計
yum install gcc c 安裝c 環境 然後開始編寫c 程式,假設放到test1.cpp中,g o test11 test1.cpp就會編譯test1.cpp生成test11檔案。test11就可以執行該程式 查詢乙個包是否被安裝 rpm q rpm package name 列出所有被安...
Linux 下C程式設計
第乙個hello word程式 1,在桌面上新建乙個main.c檔案,檔案編輯器開啟並敲上c語言 2,在終端中輸入 cd desktop gcc main.c a.out 生成的a.out是可執行檔案 gcc main.c o main 指定編譯好的檔案的名 gcc wall main.c 意思就是...
Linux 下C程式設計
第乙個hello word程式 1,在桌面上新建乙個main.c檔案,檔案編輯器開啟並敲上c語言 2,在終端中輸入 cd desktop gcc main.c a.out 生成的a.out是可執行檔案 gcc main.c o main 指定編譯好的檔案的名 gcc wall main.c 意思就是...