永发信息网

请教个LINX信号处理函数的问题

答案:2  悬赏:80  手机版
解决时间 2021-11-26 14:27
  • 提问者网友:不爱我么
  • 2021-11-26 07:14
实现的目的是父进程创建一个子进程,之后子进程给父进程发送5个信号,对计数器加加。为了避免同一信号量的阻塞,使用了同步信号量。父进程的信号处理函数每处理一次,释放一次信号量,子进程获取信号量后才能给父进程发送信号。但是最后的运行结果显示只打印了一句“sent SIGUSR2 to parent 0 time”,然后就挂死了。那位大侠给小弟指点下,谢谢!#include#include#include#includeint counter = 0;sem_t sem;void handler(int sig){ counter++; if(0 != sem_post(&sem)) { printf("failed to release sem\n"); } else { printf("suceeded to release sem\n"); } return;}int main(){ int i; signal(SIGUSR2, handler); sem_init(&sem, 1, 1); if(fork() == 0) { for(i=0;i
最佳答案
  • 五星知识达人网友:夜风逐马
  • 2021-05-27 00:39
int sem_init(sem_t *sem, int pshared, unsigned int value)第2个参数pshared为1时不是就是进程间共享的信号量了,那sem就是共享的信号量,子进程和父进程都对同一个信号操作。我是初学者,请指点下,谢谢!
全部回答
  • 1楼网友:痴妹与他
  • 2019-10-09 23:55
非官方的施工方
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯