原创 父子进程PID的区别

2010-1-22 17:08 4025 5 5 分类: MCU/ 嵌入式
父进程执行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;
}


PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
5
关闭 站长推荐上一条 /3 下一条