新闻  |   论坛  |   博客  |   在线研讨会
父子进程PID的区别
0750long | 2010-02-06 16:11:45    阅读:6718   发布文章

父子进程PID的区别

 

父进程执行fork()之后会返回两次,对于子进程,得到的是0(但0不代表子进程的PID);而对于父进程,得到却是子进程的pid。这样根据得到不同的pid,就可以执行不同的程序。并且子进程继承了父进程的数据段和代码段。请执行ps -aux查看父子进程PID。


#include <unistd.h>
#include <signal.h>
#include <stdio.h>
 
int main(void)
{
        pid_t           pid;
        int             stat;
 
        pid = fork();
        if(pid < 0)
{
                perror("fork");
                return 1;
        }
/*子进程*/
        else if(pid == 0)
{
                printf("Child process:%d\n", getpid());
                sleep(10);
                while(1);
        }
/*父进程*/
        else
{
printf("Parent process:%d\n", getpid());
 
                printf("Send kill signal to child process (%d)\n", pid);
                sleep(1);
                kill(pid, SIGKILL);
                wait(&stat);
                if(WIFSIGNALED(stat))
{//<sys/wait.h>定义的检查wait和waitpid所返回的 终止状态的宏,其中:WIFSIGNALED(stat),如果是异常终止子进程返回的状态则为真,WTERMSIG(stat)取使自3进程异常终止的信号编号。
                        printf("Child process received signal (%d).\n", WTERMSIG(stat));
                }
        }
 
        return 0;
}

*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。

参与讨论
登录后参与讨论
推荐文章
最近访客