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

相关推荐
开压路机8 小时前
进程控制
linux·服务器
香蕉鼠片8 小时前
跨平台开发到底是什么
linux·windows·macos
bukeyiwanshui10 小时前
20260417 DNS实验
linux
代码中介商11 小时前
Linux 帮助手册与用户管理完全指南
linux·运维·服务器
weixin_4491736513 小时前
Linux -- 项目中查找日志的常用Linux命令
linux·运维·服务器
想唱rap14 小时前
C++智能指针
linux·jvm·数据结构·c++·mysql·ubuntu·bash
Strugglingler14 小时前
基于whiptail开发shell导航工具
linux·shell·ui设计·whiptail
艾醒(AiXing-w)14 小时前
Linux系统管理(二十)——Linux root磁盘不足?一站式应急清理方案(亲测可用)
linux·运维·服务器
小义_15 小时前
【Kubernetes】(五) pod2
linux·云原生·容器·kubernetes
哇哦98215 小时前
渗透安全(渗透防御)②
linux·安全·渗透防御