linux c 網路開發日記(4)多程序程式設計

2021-07-04 06:05:10 字數 2224 閱讀 1373

獲取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結構的管理資訊...