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 小时前
内网渗透靶场实操清单(基于 Vulhub+Metasploitable 2)
linux·windows·学习·ubuntu
橘子真甜~3 小时前
C/C++ Linux网络编程15 - 网络层IP协议
linux·网络·c++·网络协议·tcp/ip·计算机网络·网络层
拾贰_C4 小时前
【Linux | Windows | Terminal Command】 Linux---grep | Windows--- findstr
linux·运维·服务器
阿华hhh5 小时前
Linux系统编程(标准io)
linux·开发语言·c++
石像鬼₧魂石5 小时前
Kali Linux 网络端口深度扫描
linux·运维·网络
alengan5 小时前
linux上面写python3日志服务器
linux·运维·服务器
Rose sait6 小时前
【环境配置】Linux配置虚拟环境pytorch
linux·人工智能·python
叶之香7 小时前
CentOS/RHEL 7、8安装exfat和ntfs文件系统
linux·运维·centos
一世琉璃白_Y7 小时前
pg配置国内数据源安装
linux·python·postgresql·centos