1.

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

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

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

  fp:FILE*指针变量标识符

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

2.

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

  vofork特点:

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

eg:      

 int  g_val=;
int main()
{
pid_t id=vfork();
if(id<){
perror("vfork");
return ;
}
else if(id==){//child
g_val=;
printf("child:pid:%d ppid:%d,g_val:%d,&g_val:%p\n",\
getpid(),getppid(),g_val,&g_val);
exit();
}
else{
printf("father:pid:%d,ppid:%d,g_val:%d,&g_val:%p\n",\
getpid(),getppid(),g_val,&g_val);
}
return ;
}

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

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

     pid_t id=vfork();
if(id<){
perror("vfork");
return ;
}
else if(id==){//child
//g_val=100;
printf("child:pid:%d ppid:%d\n",\
getpid(),getppid());
sleep(); //让子进程先等待3秒再调用exit
exit();
}
else{
printf("father:pid:%d,ppid:%d\n",\
getpid(),getppid());
}

 

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

文件描述符fd、文件指针fp和vfork()的更多相关文章

  1. 【详解】Linux的文件描述符fd与文件指针FILE*互相转换

    使用系统调用的时候用文件描述符(file descriptor,简称fd)的时候比较多,但是操作比较原始.C库函数在I/O上提供了一些方便的包装(比如格式化I/O.重定向),但是对细节的控制不够. 如 ...

  2. [转]文件IO详解(二)---文件描述符(fd)和inode号的关系

    原文:https://www.cnblogs.com/frank-yxs/p/5925563.html 文件IO详解(二)---文件描述符(fd)和inode号的关系 ---------------- ...

  3. 文件描述符fd

    java 后台运行程序命令 nohup java -jar babyshark-0.0.1-SNAPSHOT.jar > log.file 2>&1 & 命令解释:后台启动 ...

  4. 进程间传递文件描述符fd

    众所周知,子进程会继承父进程已经打开的文件描述符fd,但是fork之后的是不会被继承的,这个时候是否无能无力了?答应是NO.Linux提供了一个系统调用sendmsg,借助它,可以实现进程间传递文件描 ...

  5. 文件描述符FD的含义/文件句柄

    使用sudo lsof -nP -iTCP -sTCP:LISTEN查看占用端口的程序;因为 lsof 需要访问核心内存和各种文件,所以必须以 root 用户的身份运行它才能够充分地发挥其功能 概念 ...

  6. 文件描述符、文件表项、V节点表项的一些总结

    转自  http://blog.csdn.net/gzzheyi/article/details/7739556 表格可以参见APUE 第三版 P61. 文件描述符(进程级别): 1).在每个进程表中 ...

  7. Linux中文件描述符fd和文件指针flip的理解

    转自:http://www.cnblogs.com/Jezze/archive/2011/12/23/2299861.html 简单归纳:fd只是一个整数,在open时产生.起到一个索引的作用,进程通 ...

  8. [转载] linux中文件描述符fd和文件指针flip的理解

    转载自http://www.cnblogs.com/Jezze/archive/2011/12/23/2299861.html 简单归纳:fd只是一个整数,在open时产生.起到一个索引的作用,进程通 ...

  9. 文件描述符fd,struct files_struct

    程序可以理解为硬盘上的普通二进制文件:进程是加载到内存中的二进制文件,除了加载到内存中的二进制文件外,还附有所有对于该二进制文件描述信息的结构体,描述该进程的结构体叫PCB(进程控制块),在这就不在讨 ...

随机推荐

  1. win7 64 位 + vs2015 + opencv3.2

    下载OpenCv_3.2_vc14 链接:http://pan.baidu.com/s/1eSBu1NG 密码:104g 1.下载好后,进行解压到自己指定的目录: 解压后可以得到: 2.添加环境变量 ...

  2. Eclipse 安装中文简体语言包

    Installing the language packs Open the install wizard with 'Help' > 'Install new software...' Add ...

  3. JMeter处理返回结果unicode转码为中文

    问题举例: { "ServerCode":"200","ServerMsg":"\u6210\u529f"," ...

  4. Adreno GPU Profiler

    Adreno GPU Profiler,除了UNITY profiler外的一个备选,似乎不能看CPU,内存?

  5. 550 5.7.1 Client does not have permissions to send as this sender

    收发邮件时出现以上这种情况,系统提示550 5.7.1 Client does not have permissions to send as this sender,这是什么原因赞成的呢? 活动目录 ...

  6. springmvc转页面

    @RequestMapping("/aa") public String zuan(){ return "redirect:/bb.jsp"; } 如果没有带r ...

  7. 4、python常用基础类型介绍

    1.字符串 str 描述性质的一种表示状态的例如名字 word='helloworld' print(type(word),word) <class 'str'> helloworld2. ...

  8. 项目(三)PXE高效能批量网络装机

    PXE:预启动执行环境 PXE是由intel公司开发的网络引导技术,工作在Client/Server模式,允许客户机通过网络从远程服务器下载引导镜像,并加载安装文件或者整个操作系统. 若要搭建PXE网 ...

  9. zabbix监控内存占前3位的进程信息

    一.编写shell脚本 ps aux|sort -k4nr|head -3|awk 'split($11,a,"/"){print $4","a[length( ...

  10. 171. Excel Sheet Column Number (Math)

    Related to question Excel Sheet Column Title Given a column title as appear in an Excel sheet, retur ...