Linux C程序 執行緒

2021-08-02 14:38:11 字數 1611 閱讀 6864

1、程序間通訊:

庫 在使用者空間是不可能實現程序通訊,可通過linux核心建立物件來通訊

pid_t pid;   //程序號的型別定義

pid = fork();   //建立程序

if(pid == 0){};   //子程序

if(pid == 1){};   //父程序

2、執行緒間通訊:

庫 在使用者空間可以實現執行緒間通訊,通過全域性變數通訊

pthread_t tid;//執行緒的型別定義

int ret;

//建立執行緒。執行緒識別符號、執行緒屬性、執行緒函式的起始位址、傳遞給執行緒的引數

ret = pthread_create(&tid, null, fun, (void *)str);

程序:

1 #include 2 #include 3 

4 int main()

5 18 }

19 if(pid > 0) //父程序

20

27 process_inter = 1;

28 }

29 while(1);

30 return 0;

31 }

執行:(ctrl + c 結束執行)

執行緒:注意---gcc

編譯時,需加

-lpthread

引數。

pthread不是

linux

下的預設的庫,也就是在鏈結的時候,無法找到phread庫中

庫函式的入口位址,於是鏈結會失敗。

1 //注意:編譯時 gcc -lpthread -o build thread.c

2 /*

3 * file: thread.c

4 * --------------

5 *

6 */

7 8 #include 9 #include 10

11 int thread_inter = 0; //全域性變數 實現執行緒間通訊,在使用者空間

12 void *fun(void *var)

13 21 }

22 23 int main() //主線程

24

35 for(i = 0; i < 5; i++)

36

40 thread_inter = 1; //將 thread_inter 置1,子程序開始執行

41 while(1);

42 return 0;

43 }

執行:

引數 -lpthread (指定鏈結 pthread 庫)

Linux C程序與多執行緒入門 3 訊號

訊號是系統響應某些狀況而產生的事件,程序在接受到訊號時會採取相應的行動。訊號可以明確地由乙個程序產生傳送到另外乙個程序,用這種辦法傳遞資訊或協調操作行為。程序可以生成訊號 捕捉並相應訊號或遮蔽訊號。訊號的名稱是在標頭檔案signal.h裡定義。下面我列出一部分,如下 訊號名稱 說明 sigalrm ...

Linux C程序與多執行緒入門 3 訊號

概念 訊號是系統響應某些狀況而產生的事件,程序在接受到訊號時會採取相應的行動。非常像微控制器的中斷 訊號可以明確地由乙個程序產生傳送到另外乙個程序,用這種辦法傳遞資訊或協調操作行為。程序可以生成訊號 捕捉並相應訊號或遮蔽訊號。訊號的名稱 是在標頭檔案 signal.h 裡定義。下面我列出一部分,如下...

linux c 程序學習

1.fork 由於fork後的父程序與子程序的優先順序是一樣的,所以會存在父程序已經退出了而子程序還在執行,這時候的子程序就是孤兒程序,會被init程序收養,所以這時候getppid得到的1。int main exit 0 2.vfork 由vfork也是用來建立程序,但是子程序是共享父程序的位址空...