小编JS1*_*JS1的帖子

C使用信号同步进程

好吧所以我正在努力教自己如何做信号,我遇到了一个打嗝,我无法弄清楚我做错了什么.现在正在发生的事情是:它正在执行父级然后转到子级然后再回到父级..它没有做我想要它做的事情,即执行父级(用户定义它运行的时间)然后杀死它然后去孩子并在相同的时间运行自己.

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <signal.h>
#include <sys/types.h> // for wait
#include <sys/wait.h>  // for wait

void action(int);
void action(int dummy){
    sleep(1);
    printf("Switching\n");
}

int main(int argc, char *argv[]){
    pid_t pid;
    int m = atoi(argv[1]), i = 0, x = 0;
    if((pid=fork())>0){//parent
        sleep(1);
        while(i < m){
            printf("hello %d\n", x);
            x++;
            kill(pid, SIGUSR1);
            signal(SIGUSR1, action);
            pause();
            i++;
        }
    }

    else
        while(i < m){//child
            //waitpid(getppid(), &status, 0); // wait for parent
            signal(SIGUSR1, action);
            pause();
            printf("hi%d\n", x);
            x++;
            kill(getppid(), SIGUSR1); …
Run Code Online (Sandbox Code Playgroud)

c linux fork signals system-calls

2
推荐指数
1
解决办法
2088
查看次数

标签 统计

c ×1

fork ×1

linux ×1

signals ×1

system-calls ×1