[英]Fork and child/parent processes
我正在為我的OS課程學習期中課程,並正在查看此代碼示例。 在我的系統(OS X Yosemite)上,我得到了兩個,兩個,三個,所以盡管缺少wait()函數,但子進程似乎先於父進程運行並輸出。 這是所有系統上的預期行為嗎,或者也可能是二三四兩,甚至有所不同?
#include <stdio.h>
#include <unistd.h>
int main()
{
int rc;
printf( "ONE\n" );
rc = fork();
printf( "TWO\n" );
if ( rc == 0 ) { printf( "THREE\n" ); }
if ( rc > 0 ) { printf( "FOUR\n" ); }
return 0;
}
它將顯示ONE
,然后顯示:
對於父進程:
TWO
FOUR
對於子進程:
TWO
THREE
這兩個過程是不同的,它們之間沒有同步。 他們按自己的時間安排應有的時間。
所以說,如果父母比孩子更快,你可以得到TWO
FOUR
其次是TWO
THREE
。 如果孩子是快,你可以得到TWO
THREE
其次是TWO
FOUR
。 如果他們是大致相同的,你可以得到,他們的輸出混合的結果,如TWO
TWO
FOUR
THREE
,或其任何組合。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.