fork()函数浅析

本文通过一个简单的示例程序解释了`fork()`函数的工作原理。当`fork()`创建子进程时,它会复制父进程的数据段、BSS段、代码段、堆和栈空间。在示例中,变量`i`在父子进程中独立。同时,文件描述符被复制,但其关联的内核文件表示以共享方式实现。子进程从`fork()`返回的位置继续执行,因此不会再次执行文件打开和写入操作。
摘要由CSDN通过智能技术生成

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <fcntl.h>
#include <sys/types.h>
int main()
{
 int i=1;
 pid_t pid;
 int  fd;
 int  status;
 char *ch1="asd";
 char *ch2="bnm";
 char *ch3="opl";
 fd=open("text.txt",O_RDWR|O_CREAT,0777);
 if(fd==-1)
 {
  perror("open");
  exit(1);
 }
 if(write(fd,ch1,3)==-1)
 {
  perror("write");
  exit(1);
 }
 pid=fork();
 if(pid==-1)
 {
  perror("fork");
  exit(1);
 }
 else if(pid==0)
 {
  i++;
  printf("in the child process:%d\n",i);
  if(write(fd,"in the child"

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值