为何fork()函数输出出现意外的%符号?
为什么fork()程序的printf输出末尾会出现%符号?
你第一段代码执行后输出的129660%里,那个%根本不是程序输出的内容——它是你的shell命令提示符。
具体原因是这样的:
fork()调用会创建一个子进程,父进程和子进程会同时往下执行代码。第一段代码里两个进程都会跑printf("%d", pid):父进程打印子进程的PID(比如12966),子进程打印0,因为没有换行符,这两个输出会直接拼在一起,变成129660。- 程序执行完退出后,shell会立刻在当前光标位置打印自己的提示符(你的shell用
%作为提示符,比如zsh默认就是这个符号)。因为程序输出的末尾没有换行,光标停在129660的末尾,所以shell的%就直接跟在了后面,看起来像是程序输出的一部分。
等你给printf加上\n换行符后,每个进程的输出都会带个换行,光标会跳到下一行开头。程序退出后,shell的提示符就会出现在新的一行,自然不会和程序输出混在一起了。
内容的提问来源于stack exchange,提问作者dubugger
相关产品推荐
相关产品推荐

