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

相关推荐
powerfulzyh1 小时前
Ubuntu24.04远程开机
linux·ubuntu·远程工作
ulimpid1 小时前
Command | Ubuntu 个别实用命令记录(新建用户、查看网速等)
linux·ubuntu·command
HHoao1 小时前
Ubuntu启动后第一次需要很久才能启动GTK应用问题
linux·运维·ubuntu
小灰兔的小白兔1 小时前
【Ubuntu】Ubuntu常用命令
linux·运维·ubuntu
GFCGUO1 小时前
ubuntu18.04运行OpenPCDet出现的问题
linux·python·学习·ubuntu·conda·pip
winds~1 小时前
ubuntu中软件的进程管理-结束软件运行
linux·运维·ubuntu
阳光不锈@1 小时前
麒麟桌面系统安装和配置Node.js
linux·麒麟系统安装node.js
叫我龙翔2 小时前
【Linux】进程间关系与守护进程
linux·运维·服务器·计算机网络
小诸葛的博客2 小时前
Ubuntu如何如何安装tcpdump
linux·ubuntu·tcpdump
S hh3 小时前
【Linux】进程地址空间
java·linux·运维·服务器·学习