我试图编写一个使用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;。 天真的我试图使用一个静态的全局变量,但由于显而易见的原因它并没有起作用。