/*************************************************************************> File Name: 8.3.c> Author: Xiuyang(Carl) Sun> Mail: sunxiuyang04@gmail.com > Created Time: 2015年08月28日 星期五 23时42分34秒************************************************************************/#include <apue.h>
int globvar = 6;
int main(){int var;pid_t pid;var = 88;printf("before vfork\n");if((pid = vfork())<0){err_sys("vfork error");}else if(pid == 0){globvar++;var++;_exit(0);}printf("pid = %ld, glob = %d, var = %d\n",(long)getpid(),globvar,var);exit(0);
}

如果用exit调用代替_exit调用,那么可能是标准输出关闭,是printf返回-1.

实验用下面的代码

i = printf("pid = %ld, glob = %d, var = %d\n",(long)getpid(),globvar,var);
sprintf(buf, "%d\n", i);
write(STDOUT_FILENO, buf ,strlen(buf));
/*************************************************************************> File Name: 8.3.c> Author: Xiuyang(Carl) Sun> Mail: sunxiuyang04@gmail.com > Created Time: 2015年08月28日 星期五 23时42分34秒************************************************************************/#include <apue.h>
int globvar = 6;
int main(){int var;pid_t pid;var = 88;printf("before vfork\n");if((pid = vfork())<0){err_sys("vfork error");}else if(pid == 0){globvar++;var++;fclose(stdout);exit(0);}int i;char buf[10];i = printf("pid = %ld, glob = %d, var = %d\n",(long)getpid(),globvar,var);sprintf(buf, "%d\n",i);write(STDOUT_FILENO, buf, strlen(buf));exit(0);
}

修改之后,就输出-1,因为实验时我的只使用exit(0)并没有关闭标准I/O,所有再加上了fclose(stdout),假设exit关闭标准I/O流,但不关闭文件描述符STDOUT_FILENO. 有些版本的标准I/O库会关闭与标准输出相关联的文件描述符从而引起write标准输出失败,再这种情况下调用dup讲标准输出复制到另一个描述符,write则使用新复制的文件描述符.
8.4


出现这种情况就是子进程在父进程结束了还没有结束

可以使用TELL_PARENT(getppid())告诉父进程 我们做完了





UNIX环境高级编程之第8章:进程控制-习题相关推荐

  1. UNIX环境高级编程之第4章:文件和文件夹-习题

    4.1 stat函数是尾随符号链接的,所以用stat替换lstat不会显示符号链接的信息 4.2 在一个目录下先再shell中输入umask shell进程再进行创建文件的操作.其权限抖都会被屏蔽 4 ...

  2. unix环境高级编程之 read与write 函数详解

    学习记录:unix环境高级编程之 read 与write  函数详解 备注:本博文非本人所写,本人觉得此文讲的非常地道通俗易懂,所以摘录在此以方便以后再次查看 read函数从打开的设备或文件中读取数据 ...

  3. UNIX环境高级编程源码

    UNIX环境高级编程源码 一.下载源码 利用wget命令下载源码,源码地址http://apuebook.com/src.3e.tar.gz 可以在服务器的根目录下创建文件夹,mkdir 1.mkdi ...

  4. 《Unix环境高级编程》Note——第一章基础知识

    文章目录 第一章 Unix基础知识 1.引言 2.Unix体系结构 3.登录 4.文件和目录 5.输入和输出 6.程序和进程 7.出错处理 8.用户标识 9.信号 10.时间值 11.系统调用和库函数 ...

  5. UNIX 环境高级编程总结——第五章 标准I/O 库

    5.1 流和 FILE 对象 对于标准 I/O 库,它们的操作则是围绕流(stream)进行的. 当打开一个流时,标准 I/O 函数 fopen 返回一个指向 FILE 对象的指针. 为了引用一个流, ...

  6. UNIX环境高级编程(屏幕打印和inet_ntoa输出异常问题)

    一.来回在屏幕和文件之间打印 在网上没找到在屏幕和文件来回打印的方法,翻了下UNIX环境高级编,里面有个freopen用于在一个指定的流上打开一个指定的文件,如果要将标准输出打印到文件,需要调用该函数 ...

  7. 开发日记-20190827 关键词 读书笔记《Unix环境高级编程(第二版)》DAY 3

    Referred Blogs 文件描述符标志,文件状态标志 Linux中文件描述符fd和文件指针flip的理解 Linux编程–文件描述符fd 文件共享 Unix支持在不同进程间共享文件. 内核使用了 ...

  8. python flask高级编程之restful_('Python Flask高级编程之RESTFul API前后端分离精讲',),全套视频教程学习资料通过百度云网盘下载...

    资源详情 r n t某课网好评度100%的Python Flask高级编程之RESTFul API前后端分离精讲 r n t t t第1章 随便聊聊 r n t t t聊聊Flask与Django,聊 ...

  9. 《UNIX环境高级编程(第3版)》——1.7 出错处理

    本节书摘来自异步社区<UNIX环境高级编程(第3版)>一书中的第1章,第1.7节,作者:[美]W. Richard Stevens , Stephen A.Rago著,更多章节内容可以访问 ...

  10. unix环境高级编程 pdf_UNIX系统编程宝典,每一本都值得程序员珍藏

    这几本UNIX系统编程宝典,重印无数次,几代程序员都视如珍宝的几本书,小编在出版圈里快十年了,见证了这本书图灵版.异步社区版的出版.营销,对这套书倾注了一定的感情.今天继续分享给你们,好书总会有人还不 ...

最新文章

  1. 数据结构 — B+ 树
  2. 前端每日实战:164# 视频演示如何用原生 JS 创作一个数独训练小游戏(内含 4 个视频)...
  3. GeoHash -------寻找附近人
  4. 王亚楠:基于强化学习的自动码率调节
  5. Kubernetes之kubectl常用命令
  6. java执行python路径_java调用其它语言脚本(python、js)
  7. java安全(五)java反序列化
  8. C++工作笔记-编译时类型检查与运行时类型检查
  9. kaggle:PUBG Finish Placement Prediction
  10. SpringCloud Consul 服务注册与发现
  11. php修改学生信息代码_PHP连接MySQL数据库添加图书功能
  12. A.I. Wiki 人工智能
  13. 车路协同应用场景分析
  14. (七)线程的优先级Priority和关键词:synchronized
  15. hover效果移除时元素还原太生硬的情况
  16. 计算机网络生存时间单位,TTL(生存时间值)_百度百科
  17. dec在oracle中,在SQL – Oracle中查找匹配的间隔
  18. 2022华为软挑比赛(初赛笔记)
  19. Configure: error: C preprocessor “/lib/cpp“ fails sanity check
  20. 20180402-A · US Tuition Costs · ggplot2, 折线图 · R 语言数据可视化 案例 源码

热门文章

  1. eclipse编码方式、标签语言获取根目录
  2. 一篇博客:分类模型的 Loss 为什么使用 cross entropy 而不是 classification error 或 squared error...
  3. WinForm 窗体基本属性、公共控件
  4. Javascript高级程序设计——函数声明与函数表达式的区别
  5. failed to initialize monitor thread
  6. GeoServer不同服务器安装配置、数据发布及客户端访问
  7. 如何建立自己的轻量级 UI 测试工具
  8. 关于Access的日期比较和空值判断
  9. TreeMap和TreeSet在排序时如何比较元素?Collections工具类中的sort()方法如何比较元素?...
  10. 用ajax获取淘宝关键字接口