UNIX环境高级编程之第8章:进程控制-习题
/*************************************************************************> 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章:进程控制-习题相关推荐
- UNIX环境高级编程之第4章:文件和文件夹-习题
4.1 stat函数是尾随符号链接的,所以用stat替换lstat不会显示符号链接的信息 4.2 在一个目录下先再shell中输入umask shell进程再进行创建文件的操作.其权限抖都会被屏蔽 4 ...
- unix环境高级编程之 read与write 函数详解
学习记录:unix环境高级编程之 read 与write 函数详解 备注:本博文非本人所写,本人觉得此文讲的非常地道通俗易懂,所以摘录在此以方便以后再次查看 read函数从打开的设备或文件中读取数据 ...
- UNIX环境高级编程源码
UNIX环境高级编程源码 一.下载源码 利用wget命令下载源码,源码地址http://apuebook.com/src.3e.tar.gz 可以在服务器的根目录下创建文件夹,mkdir 1.mkdi ...
- 《Unix环境高级编程》Note——第一章基础知识
文章目录 第一章 Unix基础知识 1.引言 2.Unix体系结构 3.登录 4.文件和目录 5.输入和输出 6.程序和进程 7.出错处理 8.用户标识 9.信号 10.时间值 11.系统调用和库函数 ...
- UNIX 环境高级编程总结——第五章 标准I/O 库
5.1 流和 FILE 对象 对于标准 I/O 库,它们的操作则是围绕流(stream)进行的. 当打开一个流时,标准 I/O 函数 fopen 返回一个指向 FILE 对象的指针. 为了引用一个流, ...
- UNIX环境高级编程(屏幕打印和inet_ntoa输出异常问题)
一.来回在屏幕和文件之间打印 在网上没找到在屏幕和文件来回打印的方法,翻了下UNIX环境高级编,里面有个freopen用于在一个指定的流上打开一个指定的文件,如果要将标准输出打印到文件,需要调用该函数 ...
- 开发日记-20190827 关键词 读书笔记《Unix环境高级编程(第二版)》DAY 3
Referred Blogs 文件描述符标志,文件状态标志 Linux中文件描述符fd和文件指针flip的理解 Linux编程–文件描述符fd 文件共享 Unix支持在不同进程间共享文件. 内核使用了 ...
- 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,聊 ...
- 《UNIX环境高级编程(第3版)》——1.7 出错处理
本节书摘来自异步社区<UNIX环境高级编程(第3版)>一书中的第1章,第1.7节,作者:[美]W. Richard Stevens , Stephen A.Rago著,更多章节内容可以访问 ...
- unix环境高级编程 pdf_UNIX系统编程宝典,每一本都值得程序员珍藏
这几本UNIX系统编程宝典,重印无数次,几代程序员都视如珍宝的几本书,小编在出版圈里快十年了,见证了这本书图灵版.异步社区版的出版.营销,对这套书倾注了一定的感情.今天继续分享给你们,好书总会有人还不 ...
最新文章
- 数据结构 — B+ 树
- 前端每日实战:164# 视频演示如何用原生 JS 创作一个数独训练小游戏(内含 4 个视频)...
- GeoHash -------寻找附近人
- 王亚楠:基于强化学习的自动码率调节
- Kubernetes之kubectl常用命令
- java执行python路径_java调用其它语言脚本(python、js)
- java安全(五)java反序列化
- C++工作笔记-编译时类型检查与运行时类型检查
- kaggle:PUBG Finish Placement Prediction
- SpringCloud Consul 服务注册与发现
- php修改学生信息代码_PHP连接MySQL数据库添加图书功能
- A.I. Wiki 人工智能
- 车路协同应用场景分析
- (七)线程的优先级Priority和关键词:synchronized
- hover效果移除时元素还原太生硬的情况
- 计算机网络生存时间单位,TTL(生存时间值)_百度百科
- dec在oracle中,在SQL – Oracle中查找匹配的间隔
- 2022华为软挑比赛(初赛笔记)
- Configure: error: C preprocessor “/lib/cpp“ fails sanity check
- 20180402-A · US Tuition Costs · ggplot2, 折线图 · R 语言数据可视化 案例 源码
热门文章
- eclipse编码方式、标签语言获取根目录
- 一篇博客:分类模型的 Loss 为什么使用 cross entropy 而不是 classification error 或 squared error...
- WinForm 窗体基本属性、公共控件
- Javascript高级程序设计——函数声明与函数表达式的区别
- failed to initialize monitor thread
- GeoServer不同服务器安装配置、数据发布及客户端访问
- 如何建立自己的轻量级 UI 测试工具
- 关于Access的日期比较和空值判断
- TreeMap和TreeSet在排序时如何比较元素?Collections工具类中的sort()方法如何比较元素?...
- 用ajax获取淘宝关键字接口