问题描述
我将同时执行A程序中的过程和B程序中的过程。
首先,执行一个程序。
然后执行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中进行类似的操作。