UNIX c关于pause的问题
发布网友
发布时间:2023-06-09 22:08
我来回答
共2个回答
热心网友
时间:2024-10-21 07:41
我想你的程序的目的是,当用户按键后,停住随机数的产生,用户再次按键后,继续随机数产生,是吧?
如果是这样了话,单一用pause是不行的,因为pause是会被任何一个信号给唤醒的,所以pause后,仍然会被定时器产生的那个信号唤醒,从而继续执行后面的随机数产生代码,因此按键暂停后,你看到了每秒钟随机数仍然会变化一次。
解决方法有很多,比方说在handle中,设置isstop的同时暂停或者启动定时器,这样就不会有定时器产生的SIGALRM了,pause也就不会被打断了。
我这里给一个更简单的解决方法,把pause那行代码改成:
if(isstop==1)
{
pause();//会被信号终端停止
continue;
}
这样当pause被打断后,不会继续向下执行,而是从循环头开始,再次pause。
如果对这个程序还有问题,可以 hi我。
如果觉得我的解答还不错,别忘了加分……
热心网友
时间:2024-10-21 07:41
getch();
kill(getppid(),SIGUSR1);//这句有问题
因为调用fork之后
就有两个进程了,一个子进程一个父进程
你这个getppid()函数是获得当前进程的pid而不是移动窗口的pid,你的信号是发给了自己,而不是发给移动窗口的进程