|
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的地方,若 會傳回一個 -1 的值去執行第一個case–1裡的程式 我們可以用ps –aux指令在linux底下類似dos的終端機 檢查正在電腦執行的程序。
|