Re: [問題] fork & printf
※ 引述《hubert100 ()》之銘言:
: #include <stdio.h>
: main()
: {
: fork(); printf("a");
: fork(); printf("b");
: }
: 結果:abababab
剛剛也想了一陣子,覺得很奇怪
突然發現,原來是 stdout 的 buffer 問題
在預設的情況下,使用 printf 時並不會馬上輸出,而會先留在記憶體裡面
因此 a 還在記憶體裡,就一併被帶到 child process 了
修改如下:
main()
{
fork(); printf("a");
printf("\n"); 或者 fflush(stdout); 強制把 buffer 的 "a" 寫出去
fork(); printf("b");
}
或者把 printf 改成 fprintf(stderr, ...); 也不會有這種情況
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.117.171.46
※ 編輯: james732 來自: 140.117.171.46 (03/17 11:52)
推
03/17 12:01, , 1F
03/17 12:01, 1F
推
03/17 12:07, , 2F
03/17 12:07, 2F
→
03/17 12:10, , 3F
03/17 12:10, 3F
推
03/17 12:12, , 4F
03/17 12:12, 4F
推
03/17 12:45, , 5F
03/17 12:45, 5F
推
03/17 12:53, , 6F
03/17 12:53, 6F
→
03/17 12:54, , 7F
03/17 12:54, 7F
→
03/17 12:54, , 8F
03/17 12:54, 8F
推
03/17 13:53, , 9F
03/17 13:53, 9F
→
03/17 13:53, , 10F
03/17 13:53, 10F
推
03/17 14:04, , 11F
03/17 14:04, 11F
→
03/17 14:04, , 12F
03/17 14:04, 12F
→
03/17 14:05, , 13F
03/17 14:05, 13F
→
03/17 14:07, , 14F
03/17 14:07, 14F
→
03/17 14:25, , 15F
03/17 14:25, 15F
推
03/17 14:40, , 16F
03/17 14:40, 16F
→
03/17 14:41, , 17F
03/17 14:41, 17F
→
03/17 14:43, , 18F
03/17 14:43, 18F
→
03/17 14:45, , 19F
03/17 14:45, 19F
推
03/17 15:57, , 20F
03/17 15:57, 20F
→
03/17 15:57, , 21F
03/17 15:57, 21F
推
03/17 16:05, , 22F
03/17 16:05, 22F
→
03/17 16:06, , 23F
03/17 16:06, 23F
推
03/18 07:33, , 24F
03/18 07:33, 24F
→
03/18 07:33, , 25F
03/18 07:33, 25F
討論串 (同標題文章)
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章