1程式與執行緒以及Linux中fork()的運用

OnlineIsMe發表於2017-06-25

讀《用TCP/IP進行網際互連——客戶-伺服器程式設計與應用(Linux/POSIX套接字版)》

第1章 引言和概述

TELNET的在LINUX和WIN7中的使用以及在WIN7中的啟用方法

http://blog.csdn.net/qq_27607539/article/details/73715679

第2章 客戶-伺服器模型與軟體設計

這章還為參透,之後看看能不能有所感悟吧。

第3章 客戶-伺服器軟體中的併發處理

併發執行。

程式與執行緒的變數共享問題。

當多個執行緒併發地執行同一段程式碼時,對這段程式碼所涉及的變數,每個執行緒都應各有一份獨立的副本。

每個程式擁有全域性變數的副本;如果多個執行緒在同一個程式內執行,則它們各自擁有區域性變數的副本,但都可共享程式的全域性變數副本。

當多個執行緒併發地執行一段程式碼時,每個執行緒擁有自己的棧。


LINUX下的多程式程式設計。

fork()函式用來將執行著的程式分成2個幾乎完全一樣的程式,每個程式都啟動一個從程式碼的同一位置開始執行的執行緒。

fork呼叫新建立的程式都是單執行緒的。

返回值: 若成功呼叫一次則返回兩個值,子程式返回0,父程式返回子程式標記;否則,出錯返回-1。

包含標頭檔案

#include<unistd.h>
#include<sys/types.h>

程式設計示例

#include<stdio.h>
#include<unistd.h>
#include<sys/types.h>
int main(void){
int pid;
pid=fork();
if(pid==-1) return -1;
if(pid==0){
//子程式
printf("這裡是子程式!\n");
}else{
//父程式
printf("這裡是父程式!\n");
printf("子程式的PID=%d\n",pid);
return 0;
}
}

LINUX下的C編譯方法參考

http://blog.csdn.net/qq_27607539/article/details/73721946

上述程式碼編譯執行結果如下:

程式之間是併發執行的,子程式的輸出不一定在前。

相關文章