关于标准I/O缓冲区和fork函数
2024-09-19 00:31:41
标准I/O库提供缓冲的目的是尽可能减少使用read和write调用的次数。标准I/O提供三个类型的缓冲:全缓冲、行缓冲和不带缓冲。标准输入(stdin)和标准输出(stdout)是行缓冲,标准出错(stderr)是不带缓冲的。行缓冲指当在输入输出中遇到换行符时,标准I/O库执行I/O操作。
fork函数:
#include <unistd.h>
pid_t fork(void)
/*返回值:
* 子进程中返回0,父进程中返回子进程ID,出错返回-1
*/
子进程和父进程继续执行fork调用之后的指令。子进程是父进程的副本。子进程获得父进程数据空间、堆和栈的副本。
#include <unistd.h>
#include <stdio.h>
int
main()
{
int i=;
for(i=;i<;i++)
{
fork();
printf("-");
}
printf("\n");
return ;
}
执行该程序结果截图:
改进一下程序:
#include <unistd.h>
#include <stdio.h>
int
main()
{
int i=;
for(i=;i<;i++)
{
fork();
printf("-");
}
printf("pid=%d\n",getpid());
sleep();
return ;
}
运行结果截图:
本程序会产生4个进程。一个主进程,执行两次输出“-”。一个子进程执行两次输出“-”,另外两个子进程执行一次输出“-”,但是它们被fork生成时复制了父进程的输出缓冲区。
最新文章
- 利用for循环找出1000以内的质数
- sh6.脚本磁盘分区格式化
- 盘点销售一体机 打印POS一体的设备。 打印,盘点,销售PDA(手持终端)+移动销售POS软件
- mac 设置阿里企业邮箱
- 【NOIP 2015 &; SDOI 2016 Round1 &; CTSC 2016 &; SDOI2016 Round2】游记
- Silverlight管理系统源码(用于开发ERP、OA、CRM、HR、进销存、财务等系统之用)
- LightOJ 1248 Dice (III) 概率
- NAND FLASH均衡算法笔记(转)
- 如何配置LCD背光和LED,调试方法
- Java反射机制(取得类的结构)
- Linux学习笔记3——Linux中常用系统管理命令
- apple watch 与 iphone 之间的通信方式
- SpringMVC中url-pattern /和/*的区别
- Akka-CQRS(0)- 基于akka-cluster的读写分离框架,构建gRPC移动应用后端架构
- 启动tomcat出现内存溢出错误 java.lang.OutOfMemoryError: PermGen space
- [转] css3变形属性transform
- What is the best Java email address validation method?
- mongodb自动关闭:页面文件太小,无法完成操作
- Python安装模块出错(No module named setuptools)解决方法
- 理解 CSS 的 z-index 属性