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

相关推荐
月白风清江有声2 分钟前
下载电影开字幕(不是实时的ployer)
linux·学习
minji...3 分钟前
Linux 网络基础(三)HTTP的请求方法(GET/POST),HTTP表单、临时和永久重定向状态码、Cookie、查询参数、Web根目录
linux·运维·服务器·网络·c++·http
小茬粥4 分钟前
COLT_CMDB_nvidia_gpu_20260508.sh
linux·服务器·windows
流浪0015 分钟前
Linux基础篇(二)轻松掌握入门级指令
linux·运维·服务器
郝学胜-神的一滴6 分钟前
跨平台 C++ 静态库编译实战:Linux/Windows/macOS 三端统一实现
linux·开发语言·c++·windows·软件构建
翔云12345610 分钟前
Linux 系统进程全状态详解(内核底层+用户实操双视角)
linux·运维
bukeyiwanshui16 分钟前
20260509 Dockerfile案例
linux·运维·docker
IMPYLH18 分钟前
Linux 的 tty 命令
linux·运维·服务器·bash
@王先生119 分钟前
rancher安装--针对报错API Aggregation not ready
linux·运维·rancher
能喵烧香21 分钟前
鸿潮万相:全品类OpenHarmony定制发行版全景详解
linux·系统架构·开源