欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

linux下多線程中的fork介紹

 更新時間:2021年12月01日 15:29:22   作者:code-016  
大家好,本篇文章主要講的是linux下多線程中的fork介紹,感興趣的同學趕快來看一看吧,對你有幫助的話記得收藏一下哦,方便下次瀏覽

問題提出:

回想一下:當一個程序只有主線程的時候調用fork,此時fork會創(chuàng)建出的子進程也會只有一條線程;

那要是把fork放入多線程的程序中呢?

我們來試驗下:

情況(1)fork在創(chuàng)建子線程之前

代碼:

#include <stdio.h>
#include <pthread.h>
#include <unistd.h>
void* pthread_fun(void* arg)
{
	printf("fun = %d\n", getpid());
	pthread_exit(NULL);
}
int main()
{
	fork();

	pthread_t id;
	pthread_create(&id, NULL, pthread_fun, NULL);
	
	printf("main_pid = %d\n", getpid());
	pthread_join(id, NULL);

	return 0;
}

結果:fork出的子進程也會創(chuàng)建自己的子線程(兩個進程:四個線程

在這里插入圖片描述

情況(2)fork在創(chuàng)建子線程之后

代碼:

#include <stdio.h>
#include <pthread.h>
#include <unistd.h>

void* pthread_fun(void* arg)
{
	printf("fun = %d\n", getpid());
	pthread_exit(NULL);
}
int main()
{

	pthread_t id;
	pthread_create(&id, NULL, pthread_fun, NULL);
	fork();
	
	printf("main_pid = %d\n", getpid());
	pthread_join(id, NULL);
	return 0;
}

結果:創(chuàng)建子線程之后,再創(chuàng)建子進程,此時fork的子進程只會執(zhí)行fork之后的代碼(兩個進程:三個線程

在這里插入圖片描述

情況(3)子線程中的fork

代碼:

#include <stdio.h>
#include <pthread.h>
#include <unistd.h>

void* pthread_fun(void* arg)
{
	fork();
	printf("fun = %d\n", getpid());
	pthread_exit(NULL);
}
int main()
{

	pthread_t id;
	pthread_create(&id, NULL, pthread_fun, NULL);
	
	printf("main_pid = %d\n", getpid());
	pthread_join(id, NULL);

	return 0;
}

結果:

在這里插入圖片描述

結論:

fork處于哪個線程中,fork后創(chuàng)建的子進程將以該線程作為自己的主線程,并且執(zhí)行該線程之后的代碼

到此這篇關于linux下多線程中的fork介紹的文章就介紹到這了,更多相關linux多線程fork內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Linux下通過sed命令對kv方式的配置文件進行修改

    Linux下通過sed命令對kv方式的配置文件進行修改

    sed是unix下的面向字符流的編輯器,即stream editor, 它是面向行的,以行為單位進行處理,同時,sed是非交互式的,一旦執(zhí)行便要處理完整個文件。這篇文章主要介紹了Linux下通過sed命令對kv方式的配置文件進行修改,需要的朋友可以參考下
    2018-11-11
  • Ubuntu18.04通過源碼安裝Odoo14的教程

    Ubuntu18.04通過源碼安裝Odoo14的教程

    本系列文章針對Odoo 14版,從系統安裝,開發(fā)環(huán)境配置,代碼結構,主要功能升級,源碼賞析,Anodoo對Odoo的關鍵擴展等角度,預先給大家介紹即將在2020年發(fā)布的這一最新版本
    2020-02-02
  • Centos中TCPWrappers訪問控制實現

    Centos中TCPWrappers訪問控制實現

    這篇文章主要介紹了Centos中TCPWrappers訪問控制實現,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-11-11
  • apache負載均衡的安裝和實現方法

    apache負載均衡的安裝和實現方法

    在負載均衡技術中,硬件設備是比較昂貴的,對于負載均衡的學習者如果不是在企業(yè)中應用或者是學員中學習,很少有機會能碰到實際操作的訓練。所以,很多朋友都會選擇軟件方面的設置進行研究?,F在我們就來介紹一下再Apache下的Tomcat負載均衡的一些使用問題
    2012-10-10
  • Linux 和Windows 安裝Git 步驟詳細介紹

    Linux 和Windows 安裝Git 步驟詳細介紹

    這篇文章主要介紹了Linux 和Windows 安裝Git 步驟詳細介紹的相關資料,需要的朋友可以參考下
    2017-01-01
  • Linux下如何使用gdb調試core文件

    Linux下如何使用gdb調試core文件

    這篇文章主要介紹了Linux下如何使用gdb調試core文件,幫助大家更好的理解和學習Linux,感興趣的朋友可以了解下
    2020-08-08
  • linux URL的301重定向代碼分析

    linux URL的301重定向代碼分析

    301重定向已經過很多次了,它可以將網站的主域名和二級域名規(guī)范到一個url上,使網頁在搜索引擎里只能通過唯一的一個地址可以訪問到,以免因重復內容造成降權。
    2008-09-09
  • linux中expect的介紹與使用示例

    linux中expect的介紹與使用示例

    expect是一種自動交互語言,能實現在shell腳本中為scp和ssh等自動輸入密碼自動登錄。下面這篇文章主要介紹了linux中使用expect的方法示例,需要的朋友可以參考借鑒,下面來一起學習學習吧。
    2017-01-01
  • Linux shell tr 命令詳解

    Linux shell tr 命令詳解

    這篇文章主要介紹了Linux shell tr 命令詳解的相關資料,需要的朋友可以參考下
    2017-01-01
  • 解決Linux可執(zhí)行文件目錄下明明存在*.so文件,但卻提示找不到

    解決Linux可執(zhí)行文件目錄下明明存在*.so文件,但卻提示找不到

    這篇文章主要介紹了解決Linux可執(zhí)行文件目錄下明明存在*.so文件,但卻提示找不到問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-11-11

最新評論