使用睡眠function时如何增加计数?

嘿伙计们,我好像迷路了。 我应该能够在无限循环内增加一个孩子的计数,并在父母每次发送一个信号时打印计数,这应该是每1秒。 我编写了我的代码,但我认为在使用fork之后,子进程和父进程同时运行,但事实并非如此,所以我不确定如何解决这个问题。 任何帮助都会很棒

你所描述的应该在理论上有效。

编写并行代码可能很棘手,尤其是使用fork() ,如果您不熟悉该过程。

这是我的建议:在整个代码中添加一堆调试打印,例如:

 int pid = fork(); if(pid == -1) { printf("Fork failed!\n"); } else if (pid) { printf("I'm the parent!\n"); // Do stuff printf("Parent exiting\n"); exit(0); } else { printf("I'm the child!\n"); // Do stuff printf("Child exiting\n"); exit(0); } 

然后你可以看到你的程序是否表现得如此。

还要在信号处理程序中添加printf()语句,以确保它被调用。

子进程应该能够只运行sleep() ,并让父SIGALRM发送SIGALRM来唤醒它。 也许你让孩子坐在一个繁忙的循环中 ,消耗了太多的CPU,父母没有按预期运行。

当然,如果你展示你的代码,对这些问题的回答会更好。