今天上午课间休息,教操作系统课的老韩看我没事正在跟同学聊天,就过来给我出了这么个问题:
"你看这两段代码运行结果有什么不同么?"
代码1:#include<unistd.h>
#include<stdio.h>
#include<sys/types.h>
int main()
{
printf("1 2 3");
fork();
}
代码2:
#include<unistd.h>
#include<stdio.h>
#include<sys/types.h>
int main()
{
printf("1 2 3\n");
fork();
}
直观看好像两段代码都应该输出“1 2 3”,只不过代码2的“1 2 3”换行了而已,fork()出的子进程同样拥有主进程的所有“状态”,那么既然都输出了……好像还是没什么区别
“你说计算机应该怎么处理‘\n’呢?”
把当前行都补满空白字符?这样下一次输出就能新开一行?
“那你理解缓冲区的概念么?”
buffer?好像我也只是用,没了解过机制。
“课下去探索探索,试一试!”
带着这些问题,首先了解一下printf()的打印机制。
虽然带着“print”,这条命令处