C語言學習筆記-進程和系統調用

一.使用system系統調用函數linux

system()接收一個字符串參數,並把它當成命令執行數組

例如:編輯器

system("dir D:")打印D盤內容函數

system("gedit")在linux中啓動編輯器性能

system("say 'End of line'") 在mac上閱讀文本spa

二.使用elec()系統調用函數進程

elec函數位於unistd.h的頭文件中,該函數調用進程成功時,系統會中止運行當前程序,去運行調用的程序。字符串

elecl() = 參數列表get

elecle()=參數列表+環境變量it

eleclp()=參數列表+搜索PATH

elecv()=參數數組

elecve()=參數數組+環境變量

elecvp()=參數數組+搜索PATH

在使用elec()函數時應該使用NULL結束參數列表

可使用getenv()函數讀取環境變量

三.errno變量

errno變量是定義在errno.h中的全局變量

exec函數調用出錯會返回-1,系統調用函數出錯的同時將errno變量設爲錯誤碼

errno的標準錯誤碼:

EPERM=1 不容許操做

ENOENT=2 沒有該文件或目錄

ESRCH=3 沒有該進程

可使用strerror將錯誤碼轉換爲一條消息

puts(strerrot(errno));

四.使用fork()克隆進程

使用fork()函數複製當前進程

fork函數被聲明在unistd.h頭文件中

在成功運行exec()後會替換掉當前進程,使用fork函數複製當前進程並運行exec建立子進程,便於父進程中實現原程序的循環

使用方法:

pid_t pid=fork()

fork會返回一個整數爲子進程返回0,爲父進程返回一個正數,父進程將接收子進程的進程標識符

pid_t函數用於存放進程標識符

使用fork()+exec()組合,建立並運行獨立進程,不但能更好的利用現有軟件,並且還能提升程序的性能。

相關文章
相關標籤/搜索