1 子进程复制父进程的数据段、BBS段、代码段、堆空间、栈空间和文件描述符

2 对于文件描述符采用共享的方式 后面这个例子可以清晰的看出

 #include <sys/types.h>
#include <stdio.h>
#include <unistd.h>
#include <fcntl.h>
#include <string.h>
#include <stdlib.h> int main()
{
pid_t pid;
int fd;//文件描述符
int i=;
int status;
char *ch1 = "nihao";
char *ch2 = "china";
char *ch3 = "yes"; if((fd=open("test.txt",O_RDWR|O_CREAT,))==-)//不存在就创建
{
perror("parent open");
exit(EXIT_FAILURE);
}
//父进程向文件写入数据
if(write(fd,ch1,strlen(ch1))==-)
{
perror("parent open");
exit(EXIT_FAILURE);
}
//创建新进程
if((pid=fork())==-)
{
perror("fock");
exit(EXIT_FAILURE);
}
else if(pid==)
{
i=;
printf("in child\n");//打印i的值 以与父进程进行区别
printf("i=%d\n",i);
if(write(fd,ch2,strlen(ch2))==-)//写文件 与父进程共享
{
perror("child write");
return ;
}
}else
{
sleep();//等待子进程先完成
printf("in parent\n");
printf("i=%d\n",i);
if(write(fd,ch3,sizeof(ch3))==-)
{
perror("parent,write");
}
wait(&status);
return ;
} return ;
}

结果分析:

  父子进程对于局部变量执行复制操作 而对于文件描述符的文件表项信息则是共享使用。

最新文章

  1. [转] STM32各种时钟的区别
  2. Java学习——HashMap
  3. MongoDB中insert方法、update方法、save方法简单对比
  4. ArrayList的使用方法(转载)
  5. @SpringBootApplication
  6. C#验证子网掩码的正确性
  7. eclipse中tomcat配置(待完善)
  8. 九度OJ 1207 质因数的个数
  9. CodeForces 361B Levko and Permutation
  10. android109 结构体,联合体,枚举,自定义
  11. coco2dx 精灵类
  12. java-四个线程修改一个变量
  13. Oracle odi 数据表导出到文件
  14. springmvc 对 jsonp 的支持
  15. Dynamics 365 CE命令栏按钮点击后刷新表单页面方法
  16. SolidWorks装配体
  17. html基础知识梳理
  18. 在线流媒体nginx/Windows解决方案
  19. 百度APP爬虫
  20. java新特性

热门文章

  1. magic packet 远程唤醒需填写 IP broadcast address
  2. PPT中的图像失真
  3. fedora关闭防火墙
  4. BUPT复试专题—旋转图像(2014)
  5. bootstrap之ScrollTo
  6. TinyXML的使用
  7. 梳理caffe代码common(八)
  8. java中方法中声明三个点“...”作用
  9. 使用Qt发送HTTPS请求
  10. MySQL的简单优化