博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
文件描述符fd、文件指针fp和vfork()
阅读量:7304 次
发布时间:2019-06-30

本文共 1595 字,大约阅读时间需要 5 分钟。

1.

  fd:在形式上是一个非负整数.实际上他是一个索引值、指向kernal为每一个进程所维护的该进程打开文件的记录表.

    当程序打开一个文件或者创建一个新文件的时候kernal向进程返回一个文件描述符。

  优点:兼容POSIX标准,许多系统调用都依赖于它;缺点:不能移植到unix之外的系统上去

  fp:FILE*指针变量标识符

  优点:是C语言的通用格式,便于移植

 

 

2.

  vfork:使用方法同fork差不多,也适用于创建子进程

  vofork特点:

    1)在子进程调用exec或exit之前,它在父进程的空间里运行,会改变父进程的数据段、栈和堆

eg:      

int  g_val=0;  9 int main() 10 { 11         pid_t id=vfork(); 12         if(id<0){ 13                 perror("vfork"); 14                 return 1; 15         } 16         else if(id==0){
//child 17 g_val=100; 18 printf("child:pid:%d ppid:%d,g_val:%d,&g_val:%p\n",\ 19 getpid(),getppid(),g_val,&g_val); 20 exit(1); 21 } 22 else{ 23 printf("father:pid:%d,ppid:%d,g_val:%d,&g_val:%p\n",\ 24 getpid(),getppid(),g_val,&g_val); 25 } 26 return 0; 27 }

子进程改变了父进程的值(改变了父进程看到的g_val)

    2)vfork保证子进程先运行 ,在调用了exec()或者exit()之后,父进程才可能被调度运行

pid_t id=vfork(); 12         if(id<0){ 13                 perror("vfork"); 14                 return 1; 15         } 16         else if(id==0){
//child 17 //g_val=100; 18 printf("child:pid:%d ppid:%d\n",\ 19 getpid(),getppid()); 20 sleep(3); //让子进程先等待3秒再调用exit 21 exit(1); 22 } 23 else{ 24 printf("father:pid:%d,ppid:%d\n",\ 25 getpid(),getppid()); 26 }

 

结果是:子进程打印,等待3秒(调用了exit),父进程被调度

 

转载于:https://www.cnblogs.com/JN-PDD/p/6900961.html

你可能感兴趣的文章
App域名劫持之DNS高可用 - 开源版HttpDNS方案详解(转)
查看>>
Install Oracle 11gR2 on Debian wheezy(转)
查看>>
将若干字符串按字母顺序(由小到大)输出(用指针)
查看>>
PostgreSQL 如何快速构建 海量 逼真 测试数据
查看>>
【错误解决】[Maven]使用Maven配置Jstl出现异常:The absolute uri: http://java.sun.com/jsp/jstl/core cannot......
查看>>
linux命令之touch
查看>>
Content://sms
查看>>
估算之痛
查看>>
[20171206]rman与truncate2.txt
查看>>
谈消息总线的路由模型
查看>>
结构体中指针赋值问题的分析及C代码示例
查看>>
java并发编程学习:如何等待多个线程执行完成后再继续后续处理(synchronized、join、FutureTask、CyclicBarrier)...
查看>>
TortoiseGit配合msysGit在Git@OSC代码托管的傻瓜教程
查看>>
边缘计算“CROSS”欧洲新战场
查看>>
WeUI—微信官方UI库
查看>>
KNIMI数据挖掘建模与分析系列_004_利用KNIMI做客户流失预测
查看>>
Nginx中的root&alias文件路径及索引目录配置详解
查看>>
用Keras开发字符级神经网络语言模型
查看>>
Socket编程中的强制关闭与优雅关闭及相关socket选项
查看>>
1682亿!!阿里工程师如何喝着茶创造双11奇迹?
查看>>