亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

Linux中fokr函數的作用及用法

標簽:
Linux

在Linux中fork函数是非常重要的函数,它的作用是从已经存在的进程中创建一个子进程,而原进程称为父进程。

#include<unistd.h>//引用fork时的头文件pid_t   fork(void);//fork的返回类型为空12

调用fork(),当控制转移到内核中的fork代码后,内核开始做: 
1.分配新的内存块和内核数据结构给子进程。 
2.将父进程部分数据结构内容拷贝至子进程。 
3.将子进程添加到系统进程列表。 
4.fork返回开始调度器,调度。

https://img1.sycdn.imooc.com//5b7abe1e0001285b05280314.jpg 
来段代码:

  1 #include<stdio.h>
  2 #include<unistd.h>
  3 #include<stdlib.h>
  4 int main()  5 {  6     pid_t pid;  7     printf("before :pid is %d\n",getpid());  8     if((pid=fork())==-1)  9                 perror("fork()"),exit(1); 10     printf("After:pid=%d,fork return %d\n",getpid(),pid); 11         sleep(1); 12 
 13     return 0; 14 } 15 123456789101112131415

https://img1.sycdn.imooc.com//5b7abe270001b97202430063.jpg 
这个简单的例子有一些微妙的方面:

  • 调用一次,返回两次 
    fork函数被父进程调用一次,但是却返回两次;一次是返回到父进程,一次是返回到新创建的子进程。 
    https://img1.sycdn.imooc.com//5b7abe3000016a5604390223.jpg

  • 并发执行 
    子进程和父进程是并发运行的独立进程。内核能够以任意的方式交替执行他们的逻辑控制流中的指令。在我们的系统上运行这个程序时,父进程先运行它的printf语句,然后是子进程。

  • 相同但是独立的地址空间 
    因为父进程和子进程是独立的进程,他们都有自己私有的地址空间,当父进程或者子进程单独改变时,不会影响到彼此,类似于c++的写实拷贝的形式自建一个副本。

  • fork的返回值 
    1.fork的子进程返回为0; 
    2.父进程返回的是子进程的pid。

  • fork的常规用法 
    1.一个父进程希望复制自己,使得子进程同时执行不同的代码段,例如:父进程等待客户端请求,生成一个子进程来等待请求处理。 
    2.一个进程要执行一个不同的程序。

原文出处:https://blog.csdn.net/weixin_40853073/article/details/81873398

點擊查看更多內容
TA 點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優質文章

正在加載中
  • 推薦
  • 評論
  • 收藏
  • 共同學習,寫下你的評論
感謝您的支持,我會繼續努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦
今天注冊有機會得

100積分直接送

付費專欄免費學

大額優惠券免費領

立即參與 放棄機會
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

舉報

0/150
提交
取消