6 10linux多程序併發伺服器

2021-10-06 04:37:15 字數 2112 閱讀 9637

title

date

comments

categories

br#linux多程序併發伺服器

2020/3/17

true

linux

linux

伺服器

6.10

一圖勝前言,如下圖是一般伺服器併發服務示意圖

多程序伺服器,顧名思義就是服務端會有多個程序提供網路服務。

開發多程序併發伺服器需要注意以下幾點:

多程序併發伺服器server

#include #include #include #include #include #include #include #include "wrap.h"

/* waitpid 函式詳解

原型: pid_t waitpid(pid_t pid, int *status, int options);

pid:

pid>0 只等待程序id等於pid的子程序,不管其它已經有多少子程序執行結束退出了,只要指定的子程序還沒有結束,waitpid就會一直等下去。

pid=-1 等待任何乙個子程序退出,沒有任何限制,此時waitpid和wait的作用一模一樣。

pid=0時 等待同乙個程序組中的任何子程序,如果子程序已經加入了別的程序組,waitpid不會對它做任何理睬。

pidstatus: 如果不是乙個空指標,則終止程序的終止狀態就存放在status所指向的單元。引數status如果是乙個空指標,則表示父程序不關心子程序的終止狀態

option:

wnohang 若由pid指定的子程序未發生狀態改變(沒有結束),則waitpid()不阻塞,立即返回0

wuntraced 返回終止子程序資訊和因訊號停止的子程序資訊

wcontinued 返**到sigcont訊號而恢復執行的已停止子程序狀態資訊

返回值:

成功 成功結束執行的子程序的程序號

失敗 返回-1

wnohang 沒有子程序退出返回0

*//* fork()方法說明

fork系統呼叫用於建立乙個新程序,稱為子程序,它與進行fork()呼叫的程序(父程序)併發執行。

建立新的子程序後,兩個程序都將執行fork()系統呼叫之後的下一條指令。子程序使用相同的pc(程式計數器),

相同的cpu暫存器,相同的開啟檔案,這些檔案在父程序中使用。fork()在子程序中返回0,向父程序返回正整數。

實質是內部呼叫了copy_process拷貝父程序的pcb

*/#define maxline 80

#define serv_port 800

void do_sigchild(int num)

int main(void)

printf("received from %s at port %d\n",

inet_ntop(af_inet, &cliaddr.sin_addr, str, sizeof(str)),

ntohs(cliaddr.sin_port));

for (i = 0; i < n; i++)

buf[i] = toupper(buf[i]);

write(connfd, buf, n);//小寫轉大寫發回去

}close(connfd);

return 0;

} else if (pid > 0) else

perr_exit("fork");

}close(listenfd);

return 0;

}

以上就是乙個簡單的多程序伺服器

客戶端示例**

#include #include #include #include #include "wrap.h"

#define maxline 80

#define serv_port 6666

int main(int argc, char *ar**)

else

write(stdout_fileno, buf, n);

}close(sockfd);

return 0;

}

linux多程序併發伺服器

多程序併發伺服器,多執行緒版 include include include include include include include include include include include 程序 函式 void recyle int num int main int argc,cha...

Linux 併發伺服器程式設計(多程序)

在linux中通過流式套接字程式設計 tcp 實現乙個併發伺服器的訪問回顯,適合剛學完linux套接字程式設計的朋友進行鞏固訓練 具體功能 include include include include include include include include include include ...

Linux 併發伺服器程式設計(多程序)

在linux中通過流式套接字程式設計 tcp 實現乙個併發伺服器的訪問回顯,適合剛學完linux套接字程式設計的朋友進行鞏固訓練 具體功能 include include include include include include include include include include ...