成年人在线观看视频免费,国产第2页,人人狠狠综合久久亚洲婷婷,精品伊人久久

恒生電子 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)程號(hào) */

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

  }

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

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

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

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

相關(guān)文章推薦

|||||