linux进程创建,杀死进程

#include<stdio.h>
#include<signal.h>
#include<unistd.h>
#include"stdlib.h"
int wait_mark;
void waiting()
{
    sleep(5);
    if(wait_mark != 0)
    {
        kill(getpid(), SIGALRM);
    }
}
void alarming()
{
    wait_mark = 0;
}


void stop()
{
    wait_mark = 0;
}


void main()
{
    int p1, p2;
    if(p1 = fork())
    {
        if(p2 = fork())
        {
            wait_mark = 1;
            signal(SIGINT, stop);
            signal(SIGALRM, alarming);
            waiting();


            kill(p1, 16);
            kill(p2, 17);




            wait(0);
            wait(0);
            printf("parent process is over!");
            exit(0);
        }
        else
        {
            wait_mark = 1;
            signal(17, stop);
            signal(SIGINT, SIG_IGN);
            while(wait_mark != 0);
            lockf(1, 1, 0);
            printf("child 2 is over !\n");
            lockf(1, 1, 0);
            exit(0);
        }
    }
    else
    {
        wait_mark = 1;
        signal(16, stop);
        signal(SIGINT, SIG_IGN);
        while(wait_mark != 0);
        lockf(1, 1, 0);
        printf("child 1 is over !\n");
        lockf(1, 1, 0);
        exit(0);
    }
}

猜你喜欢

转载自blog.csdn.net/wrwhahah/article/details/80963889