引言
而输出顺序却是先阻塞3秒,再输出hello
而对于hello后面加上换行符 “/n”
输出顺序先是输出hello,再是阻塞三秒
原因是printf函数会把要输出的字符先存入缓冲区当中,再提交给内核,再提交给屏幕进行打印
像 “\n” 会强制刷新缓冲区,所以会出现上述后者的情况。
也可以用 *fflush(FILE )函数 进行缓冲区刷新
出现以下三种情况,数据会提交给屏幕打印:
补充:
对于 _exit(0) 函数,他不会强制刷新缓冲区,而是直接退出程序
主函数的三个参数
argc:主函数的参数个数
argv:主函数的参数内容
envp:环境变量
环境变量和参数内容都是以空作为结尾
对于环境变量我们也可以手动添加:
fork()方法
补充 :getpid() 函数 可以获取进程的pid
父子进程所用的不是同一块内存空间,但是为什么 &n的地址 是一样的呢?
因为这里显示的地址是逻辑地址,而不是物理地址
橙色:父进程
绿色: 子进程
可以看出父子进程都有同一个代号为0的逻辑地址,但是他们所对应的物理地址是不一样的
再看页表,就可以解释为什么同一个n,即有值为3,又有值为7了。