第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如果不是在main函數(shù)中而是在另一個函數(shù)中調(diào)用vfork,以后子進程從該函數(shù)返回時,會發(fā)生什么情況?

如果不是在main函數(shù)中而是在另一個函數(shù)中調(diào)用vfork,以后子進程從該函數(shù)返回時,會發(fā)生什么情況?

呼啦一陣風(fēng) 2023-04-18 19:15:30
#include <stdio.h>#include <pthread.h>#include <errno.h>#include <unistd.h>#include <sys/types.h>#define P_INFO printf("chld %u, self %u, father %u \n", pid, getpid(), getppid())void err_sys (const char* val){  fprintf(stdout, val);  return; }void func (void){  pid_t pid = -1;    pid = vfork();  if (pid < 0) {    err_sys("vfork failed\n");   }  if ( pid == 0) {    printf("child 2\n");     P_INFO;    return;   }  if (pid > 0) {    printf("father 1 func\n");     P_INFO;             return;   } }void funf (void){  pid_t pid = getpgrp();   P_INFO;  return; }int main (int argc, char** argv) {  pid_t pid = getpgrp();  printf("father 1\n");  func();  printf("father 1, out func to funf\n");  funf();  printf("father 1, out funf to exit\n");   P_INFO;  return 0; }
查看完整描述

2 回答

?
繁星coding

TA貢獻1797條經(jīng)驗 獲得超4個贊

你這樣完全是在濫用api。你應(yīng)該搞清楚vfork是用來做什么的。在vfork()產(chǎn)生的子進程結(jié)束或者調(diào)用exec之前,父進程應(yīng)當使用wait等待。

查看完整回答
反對 回復(fù) 2023-04-22
?
慕的地8271018

TA貢獻1796條經(jīng)驗 獲得超4個贊

挺好玩的, 我這邊看到是子進程可以退出, 父進程必定 segment fault.

  1. vfork, 子進程在execexit之前, 用的是父進程的地址空間.

  2. 在子進程在execexit之前, 父進程被掛起.

所以子進程先退出, 退出后 內(nèi)核 釋放進程內(nèi)存空間, 因為這里子父進程用的是一個地址空間, 就把父進程搞死了.


嗯, 這種行為是undefine. 另一臺機子, 結(jié)果是 Illegal instruction


查看完整回答
反對 回復(fù) 2023-04-22
  • 2 回答
  • 0 關(guān)注
  • 229 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號