獲取id
#include
#include
。pid_t getpid(void)
獲取本程序id
。pid_t gettppid(void)
獲取父程序id
eg:
#include
#include
#include
int main (void)
#include
pid_t fork(void)
功能:建立子程序
fork 的奇妙之處在於它被呼叫一次,卻返回兩次,有三種不同的返回值:
1、在父程序中,fork返回新建立的子程序的pid;
2、在子程序中,fork返回0;
3、如果出現錯誤,fork返回乙個負值
建立程序-fork
eg:#include
#include
int main (void)
在pid=fork()之前,只有乙個程式在執行,但在執行了這句話之後,就變成了兩個程序在執行了,這兩個程序共享**段,將要執行的嚇一跳語句都是if(pid==
0).兩個程序中,原來就存在的那個程序就被稱為父程序,出現新的那個被稱為子程序,父子程序區別於程序標誌符(pid)不同。
eg:#include
#include(unistd.h)
int main(void)
執行結果:count = 1
count = 1
子程序的資料空間、堆疊空間都會從父程序得到乙個拷貝,而不是共享,在子程序中對count進行+
1操作,並沒有影響父程序的count值,父程序的count值仍未0.
建立vfork
#include
#include
pid_t vfork(void)
功能:建立子程序。
區別:
1、fork:子程序拷貝父程序的資料段。
vfork:子程序與父程序共享資料段
2、fork:父、子程序執行次序不確定
vfork:子程序先執行,父程序後執行
exec函式族
exec用被執行的程式替換呼叫它的程式。
區別:fork建立乙個新的程序,產生新的pid。
exec啟動乙個新程式,替換原有的程序,因此程序pid不會改變。
#include
int execl(
const
char *path,const
char * arg1,...)
引數:
path:被執行程式名(含完整路徑)
arg1-argn:被執行程式所需的命令列引數,含程式名,以空指標null結束
eg:
#include
int main(void)
執行效果和 ls -al /etc/passwd 一樣
int execlp(const
char*path,const cahr * arg1,...)
引數:arg1-argn:被執行程式所需的命令列引數,含程式名,以空指標null結束
path:被執行程式名(不含路徑,將從path環境變數中查詢改程式
int execv(const
char * path,
char *const argv)
引數;path:被執行程式名(含路徑)
argv:所需命令列引數組。
#include
int system(const
char*string)
功能:呼叫fork產生子程序,由子程序呼叫/bin/sh -c string 來執行string所代表的命令。
eg:system.c
#include
int main(void)
程序等待
#include
#include
pid_ wait(int status)
功能:阻塞該程序,直到其某個子程序退出。
eg:#include
#include
#include
#include
#include
#include
#include /*
* * */
int main(void)
else
else
//父程序 }
}
開發日記2023年4月29日
1 qstylesheet用法 引數引用在 qstylesheet ref 例 this setstylesheet color green 預設是改變this下所有控制項 或元件的字型顏色為綠色 如果要指定控制項更改,需在color之前加上引用 如 this setstylesheet combo...
懶人日記4 驅動程式開發 編譯前傳
好啦,辛辛苦苦終於寫完了程式,讓我們編譯執行吧!按下ctrl f5 嘿嘿,讓我們先假設你習慣用vc來寫程式 我等啊等 疑?怎麼毫無動靜的?再看看output視窗,哇!有幾百個錯誤啊!不禁頭大 這是怎麼回事呢?原來,wdm程式編譯出來的並不是我們常見的.exe,而是.sys檔案,在未經設定編譯環境之前...
課堂筆記十之嵌入式LinuxC 網路開發實戰
一 網路程式設計 1 c s vs b s 1 c s架構 優點 a 由於客戶端實現與伺服器的直接相連,沒有中間環節,因此響應速度快 b 操作介面漂亮 形式多樣,可以充分滿足客戶自身的個性化要求 c c s結構的管理資訊系統具有較強的事務處理能力,能實現複雜的業務流程。缺點 a c s結構的管理資訊...