簡體   English   中英

叉和子/父進程

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM