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语言就出过这种事儿....

相关推荐
人还是要有梦想的23 分钟前
linux下用搜狗输入法,中英文切换
linux·运维·服务器
bush41 小时前
嵌入式linux学习记录二
linux·运维·学习
9分钟带帽1 小时前
linux_通过NFS挂载远程服务器的硬盘
linux·服务器
运维栈记3 小时前
API Error: 400 Request body format invalid
linux·ai
小白兔奶糖ovo4 小时前
【Leetcode】231. 2的幂
linux·算法·leetcode
s_w.h4 小时前
【 linux 】动静态库的制作
linux·运维·服务器·算法·bash
顺风尿一寸5 小时前
深入Linux内核:mkdir系统调用的完整实现解析
linux
用户2367829801685 小时前
Linux free 命令深度解析:从内存监控到 OOM 排查的完整指南
linux
无足鸟ICT5 小时前
【RHCA+】boxes命令(艺术框)
linux
_Voosk5 小时前
FreeBSD 使用代理运行命令
linux·运维·freebsd