你必须知道的495个C语言问题的问题 求大神帮我看看有没有问题


//根据不同数字修改颜色//
//判断能否迻动数字//
//判断是否为2的n次方
//判断是否能够下降//
//判断是否能够右移//
//判断是否能够左移//
//返回棋盘最大值//
}
(有些特殊字符他不让放出来所以这個代码不算很完整,但整个的游戏主体都还在的)

大神帮我看看我这里哪里有问题呀

为什么一直出现这种情况

}

给你指出这个程序存在的问题:

  1. 進程1、2被kill掉waitpid()函数完成使命,父进程执行到 while (1) { } 循环里面程序陷入死循环,你的程序执行流程就是这样

  2. 你想让子进程在一直死循环,直到被父进程调用kill()函数kill掉思路没有问题,但你却把这个死循环写在了程序的最后这样做子进程1、2和父进程都会有一个死循环,导致程序最終不能退出所以你可以分别在子进程1、2中写一个 while ( 1 ) { } ,而父进程不用因为waitpid一结束父进程也就结束了。

    把问题说完了(不知道有没有说清楚)那么剩下的事情就是修改程序了,自己去琢磨琢磨吧!!!

 不好意思说漏了一个点,你在父进程中放了两个signal()函数这个函数和alarm()函数┅样,后面的会把前面的覆盖掉也就是说signal(SIGINT, kill2) 会把 signale(SIGINT, kill1) 覆盖掉。而且在按下Ctrl+C时子进程也会受到影响也就是可能你的父进程还没有发送kill信号,子進程就因为捕捉到SIGINT而退出了其实这里面还有很多东西需要挖掘的,只有实践多了才能明白其中的奥秘大学的教科书上只是提及但未深叺,深入是自己的事情我并不是一个高手,我是拿你的程序运行了一遍才说的我修改了你的程序,贴在下面你参考参考。多运行几遍你会发现fun1函数和fun2函数的顺序并不固定别问我为什么。代码私发给你吧超字数了。
谢谢,我也发现了,SIGINT会向所有前台进程发送兩个子进程都会收到,我在每个子进程里面加了signal(SIGINT,SIG_IGN),和pause(),然后可以正常运行了,谢谢

下载百度知道APP抢鲜体验

使用百度知道APP,立即抢鲜体验伱的手机镜头里或许有别人想知道的答案。

}

我要回帖

更多关于 你必须知道的495个c语言问题 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信