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

相关推荐
readhere1 小时前
从ZYNQ7000开发板,学会启动嵌入式Linux系统——入门学习:EBAZ4205篇目录
linux·启动·嵌入式linux·zynq7000·ebaz4205
打工仔折腾 AI2 小时前
在 Ubuntu ARM64 部署 Q1 V3.0 MuJoCo 模型:加载、单步推理与执行器响应解析
linux·运维·人工智能·python·深度学习·ubuntu·性能优化
‎ദ്ദിᵔ.˛.ᵔ₎2 小时前
关于Linux 线程局部存储的认识
linux·运维
小小de风呀4 小时前
de风——【从零开始学习Linux】(九):进程基础 —— 从冯诺依曼体系到 fork 创建进程
linux·学习
晚风吹北巷6 小时前
Linux复习篇(自用)
linux·运维·服务器·1024程序员节
by209997 小时前
Linux 压缩传输、进程查看与权限管理
linux·经验分享·1024程序员节
无足鸟ICT8 小时前
【RHCA+】reboot命令(重启)
linux·运维·服务器·1024程序员节
DYWorker0018 小时前
第1课:基于正点原子RK3568开发板读懂Linux内核
linux·运维·网络
Android系统攻城狮9 小时前
Linux FFmpeg深度解析之avformat_open_input调用流程与实战(一)
linux·运维·ffmpeg·车载音视频·ffmpeg音视频·音视频进阶手册