如何解决如果使用C中的信号输入-1,如何退出B程序中的过程
我将同时执行A程序中的过程和B程序中的过程。
首先,执行一个程序。
然后执行B程序。
A程序和B程序共享一个数据文件。
用户输入A =>,然后将一个数字写入数据文件。 B =>从由A写入的数据文件中读取编号
我想执行在A程序输入-1中处理并退出A程序的实现
同样,使用信号完成了B程序中的处理。
结构-
A将sigusr1发送给B B将签名发送给A
示例
A:-1(输入),打印再见
B:再见
如何为此将A程序sigusr1发送到B程序?
我正在考虑这几天。
谢谢。
一个程序
do {
scanf("%d",&num);
if(num > 0)
{
lseek(fd,SEEK_SET);
write(fd,&num,sizeof(num));
printf("writes ..... %d\n\n",num);
kill(bproc,SIGUSR1);
pause();
}
else
{
kill(bproc,SIGUSR1);
}
} while ( num > 0 );
printf("bye...\n");
B程序
while(rdnum > 0)
{
lseek(fd,SEEK_SET);
read(fd,&rdnum,sizeof(int));
printf("reads... %d\n\n",rdnum);
kill(Aproc,SIGINT);
pause();
}
printf("bye...\n");
exit(0);
解决方法
除了信号编号本身之外,信号不携带任何其他数据。您似乎已经在使用SIGUSR1
作为从A到B的一般注意信号,因此您需要传达B应该通过其他方式终止的信息,除了SIGUSR1
之外,还是其他方式。
可能性更大
- 使用其他信号告诉B终止,例如
SIGUSR2
甚至是SIGTERM
。 - 在文件A中记录一个特殊值或代码,该文件已经被A用来与B进行数据通信了。
当然,您确实需要B来处理SIGUSR1
和您要发送的任何其他信号。由于您已经在A中处理信号,因此我想您可以在B中进行类似的操作。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。