4

我是 Linux 新手。我正在尝试使用 waitid() 来等待子进程。当我尝试使用 gcc 编译包含以下行的文件时:

id_t cpid = fork();
siginfo_t status;
waitid(P_PID, cpid, &status, WEXITED);

产生了以下错误:

error: ‘P_PID’ undeclared (first use in this function)

我包括以下库:

#include <sys/types.h>
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <signal.h>
#include <string.h> 
#include <time.h> 

我错过了什么?

另一个问题是我如何使用WIFSIGNALED()从 type 中检索信息siginfo_t

4

1 回答 1

4

您需要包含<sys/wait.h>和定义_XOPEN_SOURCE如手册中所述

WIFSIGNALED宏必须与从或获得wait的整数状态一起使用。在 的情况下,状态作为结构的成员可用。换句话说,您将使用,作为您之前传递给其地址的类型的结构。waitpidwaitidwaitpidsi_statussiginfo_tWIFSIGNALED(info.si_status)infosiginfo_twaitid()

于 2014-10-15T10:55:47.440 回答