fork()的一道面试题

前言:题源

cpp 复制代码
#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>
#include <sys/wait.h>
int main(void)
{
   int i;
   for(i=0; i<2; i++){
      fork();
      printf("-");
   }

   wait(NULL);
   wait(NULL);

   return 0;
}

知道一点fork()这个系统调用的人都知道,这个题是6个"-"被打印,但是答案是8个"-";

提醒:fork()时,子进程会拷贝父进程的缓冲区........(即刚开始父进程fork()后形成的一个子进程和自己在执行了printf("-");之后缓冲区会有一个"-"没有打印出来,第二次循环时,遇到fork();连同缓冲区里的"-"也拷贝走了;

也就是说:如果printf();后面有个'\n'的话(会刷新缓冲区),答案就是六个"-";

评论区有人留言:

printf("_") 不加\n,属于挖坑

确实如此,之前C语言就出过这种事儿....

相关推荐
馨谙11 小时前
Linux面试题----文件权限,chmod,chown,suid,sgid,粘滞位,umask
linux·运维·服务器
青衫客3612 小时前
Linux 磁盘挂载全流程实战——从新盘初始化到安全开机自启
linux·运维·服务器
大江东去浪淘尽千古风流人物12 小时前
【DSP】xiBoxFilter_3x3_U8 dsp VS cmodel
linux·运维·人工智能·算法·vr
Xの哲學13 小时前
Linux Tasklet 深度剖析: 从设计思想到底层实现
linux·网络·算法·架构·边缘计算
dog25013 小时前
Linux 6.19 TCP 的两个极限拉扯
linux·运维·tcp/ip
新兴AI民工14 小时前
【Linux内核九】进程管理模块:list_head钩子构造双向列表和一些宏定义
linux·运维·list·linux内核
小周学学学14 小时前
ESXI故障处理-重启后数据存储丢失
linux·运维·服务器
哎哟喂呢哈14 小时前
ddns 免费 ipv6
linux
Flash.kkl14 小时前
Linux——线程的同步和互斥
linux·开发语言·c++
sunfove14 小时前
Python 面向对象编程:从过程式思维到对象模型
linux·开发语言·python