场景:父进程trace进程A,当A进程fork子进程B时,让父进程也fork子进程去trace子进程B,用于trace的进程将被trace的进程发生的系统调用号通过fprintf存入各自文件中 问题:printf输出正确,而fprintf到文件的内容会重复(其实就知道了是缓冲问题) 解决:在调用fork()前用fflush(fp);清空文件缓冲区 原因:在fork()的调用处,整个父进程空间会被复制到子进程中,包括指令,变量值,程序调用栈,环境变量,缓冲区,等等. 延伸到stdio缓冲区:std…