下面这段程序摘抄自The
Linux Programming Interface - by Michael
Kerrisk
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int main(int argc, char *argv[])
{
printf("hello, world\n");
write(STDOUT_FILENO, "write\n", 6);
if (fork() == -1) {
exit(EXIT_FAILURE);
}
exit(EXIT_SUCCESS);
}奇妙的地方在于这段程序的执行效果
~/programming/test$ gcc c.c
~/programming/test$ ./a.out
hello, world
write
~/programming/test$ ./a.out > log
~/programming/test$ cat log
write
hello, world
hello, world
~/programming/test$ 直接让程序输出到终端和对程序的输出进行重定向产生了不同的结果。这个现象的原因在书里有解释,不过可以自己思考一下。
提示: 这里会用到创建子进程、输出缓冲、进程退出等知识。

本文通过一个简单的C程序探讨了直接输出到终端与重定向输出之间的差异,并深入分析了这一现象背后涉及的技术原理,包括进程创建、输出缓冲机制及进程退出等。
4万+

被折叠的 条评论
为什么被折叠?



