在fork()之后在父级和子级之间共享unsigned int?

时间:2017-05-17 17:26:44

标签: c fork

我试图编写一个使用fork()生成子进程的小程序,该进程必须增加与父进程共享的变量,如何共享unsigned int变量?

代码:

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

static unsigned int elapsed;

int count(){
    while(1){
        sleep(1);
        elapsed++;
    }
    exit(EXIT_SUCCESS);
}

void hadler(int sig){
    if( sig == SIGUSR1){
        printf("elapsed: %u\n", elapsed);
    }

}

int main(){
    pid_t pid = getpid();
    printf("This is my pid: %d\n", pid);
    pid = fork();
    if(pid == 0)
        count();

    while(1){
        signal(SIGUSR1, hadler);
    }
}

你可以看到有一个孩子而不是exec count()(增加一个变量&#34;经过&#34;每秒)。父母正在等待SIGUSR1,当收到他打印的信号时,&#34;已经过了&#34;。 天真的我试图使用一个静态的全局变量,但由于显而易见的原因它并没有起作用。

0 个答案:

没有答案