標準入出力のバッファリングには、行バッファリングと完全バッファリングがある。標準出力が端末に繋がっていると行バッファリングされ、それ以外の時は完全バッファリングされる。 下記のfork()の使用例では、標準出力に対して出力した場合、行バッファなので文字列"before fork"は1回のみ出力されている。一方、ファイルに対して出力した場合、2回出力されている。これは、バッファリングが完全バッファリングであるため、fork()をcallした時にバッファも子にコピーされたからである。親、子プロセスが終了すると、バッファの内容がフラッシュされる。 #include "ourhdr.h" int main(void) { pid_t pid; printf("before fork\n"); pid = fork(); if (pid < 0) { err_sys("fork error"); }