




 |
Server端
Unix 並行處理
Unix 是一個多重程序系統,它允許同時執行多個程序,而在Server端必須要做到
能夠同時做開啟網路傳輸和啟動encoder版子壓檔案,以及等待結束監控封包的接收。
三個程序要同時執行,處於工作的狀態,這時就必須用到並行處理的方式,將server
端實現
fork系統呼叫
主要目的是產生兩個一模一樣的程序在電腦中同時執行。fork複製一份,成為一個新的
程序,不論是變數、程式碼都和原本的程序一模一樣。唯一不同的是 fork() 的回傳
值,parent 的返回值是 child的 PID ,而 child 的返回值是 0,因此我們可以使用
switch的方式來區別主程式和副程式要執行的不同地方


使用 fork 系統呼叫的時機
1.
想同時擁有兩個程序各自執行不同的工作,
這是網路伺服程式的作法
2.
一個程序想啟動(invoke)另一個程序.

舉例:
pid_t
pid,pic;
pic=fork();
switch(pic)
{
case -1:
perror("fork err");
case 0:
execle("./tcp","tcp",0);
break;
default:
recvfrom(ser_sockfd, prnum, 2, 0, (struct sockaddr *)&cli_address,
&len);
close(cli_sockfd);
goto lp;
}
副的程序會去用execle去執行目錄底下的TCP,而主程序做等待Client端傳送封包的動作,
收到封包後關掉這兩個程序並關掉socket回到lp的地方,若fork系統呼叫失敗,
則只
會傳回一個 -1
的值去執行第一個case–1裡的程式
我們可以用ps –aux指令在linux底下類似dos的終端機
檢查正在電腦執行的程序。
首頁 | 網路導論 | TCP & UDP | Sever端 | Socket | Client端 | 執行緒Tread
|
|