亚洲v欧美v国产v在线成_制服丝袜中文字幕丝袜专区_一区二区三区韩国电影_激情欧美一区二区中文字幕

恒生電子 C/C++開發(fā)筆試題

  1.關(guān)于fork()函數(shù):

  子進(jìn)程的()改變,父進(jìn)程沒有也相應(yīng)改變 a.文件指針 b.局部變量 c.全局變量 d.靜態(tài)變量

  b

  pid_t pid;

  switch (pid = fork())

  {

  case -1:

  /* 這里pid為-1,fork函數(shù)失敗 */

  /* 一些可能的原因是 */

  /* 進(jìn)程數(shù)或虛擬內(nèi)存用盡 */

  perror(“The fork failed!”);

  break;

  case 0:

  /* pid為0,子進(jìn)程 */

  /* 這里,我們是孩子,要做什么? */

  /* … */

  /* 但是做完后, 我們需要做類似下面: */

  _exit(0);

  default:

  /* pid大于0,為父進(jìn)程得到的子進(jìn)程號 */

  printf(“Child’s pid is %d\n”,pid);

  }

  fork之后,操作系統(tǒng)會復(fù)制一個與父進(jìn)程完全相同的子進(jìn)程,雖說是父子關(guān)系,但是在操作系統(tǒng)看來,他們更像兄弟關(guān)系,這2個進(jìn)程共享代碼空間,但是數(shù)據(jù)空間是互相獨立的,子進(jìn)程數(shù)據(jù)空間中的內(nèi)容是父進(jìn)程的完整拷貝,指令指針也完全相同,但只有一點不同,如果fork成功,子進(jìn)程中fork的返回值是0,父進(jìn)程中fork的返回值是子進(jìn)程的進(jìn)程號,如果fork不成功,父進(jìn)程會返回錯誤。

  可以這樣想象,2個進(jìn)程一直同時運行,而且步調(diào)一致,在fork之后,他們分別作不同的工作,也就是分岔了。這也是fork為什么叫fork的原因。

  至于那一個最先運行,可能與操作系統(tǒng)有關(guān),而且這個問題在實際應(yīng)用中并不重要,如果需要父子進(jìn)程協(xié)同,可以通過原語的辦法解決。

本文已影響6827
上一篇:2015恒生電子筆試題 下一篇:2015恒生電子數(shù)據(jù)庫筆試題

相關(guān)文章推薦

|||||