- 论坛徽章:
- 0
|
#include <sys/types.h>
#include <sys/wait.h>
#include <unistd.h>
#include <assert.h>
#include <stdlib.h>
#include <stdio.h>
static void ErrMsg(const char *pErr);
int main(void)
{
pid_t parentProcessID, parentProcessGroupID, childProcessID, childProcessGroupID;
parentProcessID = getpid(); /* get parent process ID */
parentProcessGroupID = getpgrp(); /* get parent process group ID */
if ((childProcessID = fork()) == -1) /* create child process */
{
ErrMsg("fork() error." ;
}
else if (childProcessID == 0)
{
childProcessGroupID = getpgrp(); /* get child process group ID */
exit(0);
}
if (waitpid(childProcessID, NULL, 0) == -1) /* get child process terminate status */
{
ErrMsg("waitpid() error." ;
}
printf("parentProcessID = %d\n", parentProcessID);
printf("parentProcessGroupID = %d\n", parentProcessGroupID);
printf("childProcessID = %d\n", childProcessID);
printf("childProcessGroupID = %d\n", childProcessGroupID);
exit(0);
}
static void ErrMsg(const char *pErr)
{
assert(pErr != NULL);
printf("%s\n", pErr);
exit(1);
}
why? output: childProcessGroupID = 0
output result:
[root@localhost root]# ./a.out
parentProcessID = 2781
parentProcessGroupID = 2781
childProcessID = 2782
childProcessGroupID = 0
 |
|