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

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

Linux中的Wait(&status)系統(tǒng)調(diào)用

Linux中的Wait(&status)系統(tǒng)調(diào)用

楊魅力 2021-04-11 12:13:08
我在linux中執(zhí)行此程序,但無法通過wait(&val)系統(tǒng)調(diào)用了解程序的輸出#include <sys/types.h>#include <sys/wait.h>#include <stdio.h>int main(void){    int val = 5;    if (fork())        wait(&val);    val++;    printf("%d\n", val);    return val;}huzee98@ubuntu:~$ ./task2a 6 1537
查看完整描述

1 回答

?
翻閱古今

TA貢獻(xiàn)1780條經(jīng)驗(yàn) 獲得超5個(gè)贊

在子級(jí)中,您的程序只需將1加5,產(chǎn)生6,打印6,然后返回6作為退出狀態(tài)。


在父級(jí)中,wait(&val)成功返回后,將val包含一個(gè)魔術(shù)cookie。孩子的退出狀態(tài)被編碼在這個(gè)cookie,但必須使用宏來提取WIFEXITED,WIFSIGNALED,WEXITSTATUS,WTERMSIG,等遞增的cookie數(shù)字沒有意義。如果知道W-macros在特定操作系統(tǒng)上的工作方式,則以數(shù)字方式將其打印出來會(huì)產(chǎn)生一些可以理解的想法,但是除了調(diào)試某些東西之外,您不應(yīng)該這樣做。


父級(jí)在程序中打印的數(shù)字1537易于理解,以十六進(jìn)制表示:0x0601。這意味著在增加原始Cookie值之前,其值為0x0600。在Linux上,WIFEXITED(0x0600)是和WEXITSTATUS(0x0600) == 6。在任何其他操作系統(tǒng)上,它可能意味著相同,也可能不相同。


假設(shè)您打算生產(chǎn)一臺(tái)Rube Goldberg機(jī)器,用于印刷6和7,則更好的方法是這樣的:


#include <assert.h>

#include <stdio.h>

#include <sys/types.h>

#include <sys/wait.h>

#include <unistd.h>


int main(void)

{

   int val, status;

   pid_t pid = fork();

   if (pid == -1) {

       perror("fork");

       return 1;

   }

   if (pid == 0) {

       val = 5;

       val++;

       printf("%d\n", val);

       return val;

   }

   /* we are the parent if we get here */

   if (wait(&status) != pid) {

       perror("wait");

       return 1;

   }

   if (!WIFEXITED(status)) {

       assert(WIFSIGNALED(status));

       printf("child process killed by signal %d\n", WTERMSIG(status));

       return 1;

   }

   val = WEXITSTATUS(status);

   val++;

   printf("%d\n", val);

   return 0;

}


查看完整回答
反對(duì) 回復(fù) 2021-04-16
  • 1 回答
  • 0 關(guān)注
  • 427 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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