#include #include #include //exit 的標頭檔案
#include //_exit 的標頭檔案
pid_t fork(void);
作用:它從已存在程序中建立乙個新程序。新程序為子程序,而原程序為父程序。
返回值:這個函式有2個返回值;在不同的程序裡面返回值是不同的。
在成功的情況下:
在父程序裡面:返回值為子程序的程序號;
在子程序裡面:返回值為0;
失敗:返回值為-1;
pid_t getpid(void); //獲取當前程序的id號;
pid_t getppid(void); //獲取當前程序的父id號;
作用:獲取當前程序的程序id號。
返回值:對應的id號
pid_t wait(int *status); //隨機的等待乙個子程序退出
pid_t waitpid(pid_t pid, int *status, int options);//等待指定的pid子程序退出;
功能:執行上面的函式都是暫停程序,等待子程序退出執行清理工作;
形式引數:
pid:子程序id號;
status:傳出引數,它會將子程序的結束狀態值儲存到status指向的變數裡;
options:用於改變 waitpid 的行為。其中最常用的是 wnohang,它表示無論子程序是否退出都將立即返回,不會將呼叫者的執行掛起。
返回值:對應的子程序的id號;
int execl(const char *path, const char *arg, ...);
int execlp(const char *file, const char *arg, ...);
int execv(const char *path, char *const argv);
int execvp(const char *file, char *const argv);
作用:執行第乙個exec函式族指定的可執行程式。
形式引數:
path:包括執行檔名的全路徑名,比如"/bin/ls"。
file:既可是全路徑名也可是可執行檔名,比如"ls"。
arg:是可執行檔案的全部命令列引數,可以用多個,包含命令名本身。注意最後乙個引數必須為 null。
argv:是乙個字串陣列。是可執行檔案的全部命令列引數陣列。比如,char *argv=;
返回值:沒有作用,因為程式跑去執行組函式了,沒有辦法處理返回值。
例子:
execl("/bin/ls", "ls", "-l", null);
execlp("ls", "ls", "-l", null);
char *str = ; execv("/bin/ls", str);
char *str = ; execvp("ls", str);
void exit(int status);
void _exit(int status);
作用:都是用來終止程序的。
形式引數:
status:利用這個引數傳遞程序結束時的狀態。一般來說, 0 表示正常結束;其他的數值表示出現了錯誤,程序非正常結束。
exit 函式和_exit 函式的區別:
exit函式:在退出之前會檢查檔案的開啟情況,把檔案緩衝區中的內容寫回檔案,就是圖中的「清理 i/o 緩衝」。
_exit 函式:直接將程序關閉,緩衝區中的資料就會丟失。
因此,如想保證資料的完整性,建議使用exit 函式。
例子:
#include #include #include #include #include int main()
}else fi(pid==0)//子程序
}return 0;
}
PHP函式庫程序 常用函式歸納
雖然市場上有php手冊 但是一方面太貴,另一方面太全,因此利用php5電子手冊找了些時間為自己量身定做了一本 php秘笈 就是把常用的和比較好的一些函式庫等歸納了一下,並把php正規表示式的全部詳解 mysql的詳細指令和詳細用法 php.ini的配置詳解也收錄其中。這裡歸納一些基礎函式庫和常用擴充...
MVC相關問題歸納
問題 1 how mvc pattern flows 2 物件模型 關係模型 3 or framework 4 ef entity framework 實體框架 5 模型驅動資料資料驅動模型的兩種方式的理解 6 模型驅動資料中自動更改上下文 資料庫 表資訊時在 全域性global 中更改 來實現 7...
linux 程序管理相關函式
對於linux 函式可以通過命令列指令 man 函式名,檢視函式相關資訊 返回當前程序的pid getpid 建立乙個程序,當執行完這行 後,將會有兩個進製執行下面的 不同的是,父程序pid大於0,子程序pid 0 同時執行 fork 和fork 類似 但是這裡子程序先執行,結束後,執行父程序 vf...