请看以下例程:
| /* exit2.c */ #include<stdlib.h> main() { printf("output begin "); printf("content in buffer"); exit(0); } |
编译并运行:
| $gcc exit2.c -o exit2 $./exit2 output begin content in buffer /* _exit1.c */ main() { printf("output begin "); printf("content in buffer"); _exit(0); } |
编译并运行:
| $gcc _exit1.c -o _exit1 $./_exit1 output begin |
在Linux中,标准输入和标准输出都是作为文件处理的,虽然是一类特殊的文件,但从程序员的角度来看,它们和硬盘上存储数据的普通文件并没有任何区别。与所有其他文件一样,它们在打开后也有自己的缓冲区。
请读者结合前面的叙述,思考一下为什么这两个程序会得出不同的结果。相信如果您理解了我前面所讲的内容,会很容易的得出结论。
在这篇文章中,我们对Linux的进程管理作了初步的了解,并在此基础上学习了getpid、fork、exit和_exit四个系统调用。在下一篇文章中,我们将学习与Linux进程管理相关的其他系统调用,并将作一些更深入的探讨。