如果在 C 中使用信号输入为 -1,如何退出 B 程序进程中的进程
How to exit the process in B program process, if input is -1 using signal in C
我会在A程序和B程序中同时执行进程。
首先,A程序被执行。
然后执行B程序
A程序和B程序共享一个数据文件。
A => 来自用户的输入,然后将一个数字写入数据文件。
B => 从 A 写入的数据文件中读取数字
我想做的是在A程序中输入-1并退出A程序的实现
另外,B程序中的进程使用信号完成。
结构--
A 将 sigusr1 发送给 B
B 发送信号给 A
例子
A : -1 (input) , 打印再见
B : 再见
如何为此将 A 程序 a sigusr1 发送给 B 程序?
我想了几天。
谢谢。
一个程序
do {
scanf("%d",&num);
if(num > 0)
{
lseek(fd,0,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,0,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
之外或代替 SIGUSR1
。
比较有可能的是
- 使用不同的信号告诉 B 终止,例如
SIGUSR2
,甚至 SIGTERM
。
- 在文件中记录 A 已经用来与 B 进行数据通信的特殊值或代码
但是你当然需要 B 来处理 SIGUSR1
和你发送的任何其他信号。由于您已经在 A 中处理信号,我认为您可以在 B 中做类似的事情。
我会在A程序和B程序中同时执行进程。
首先,A程序被执行。
然后执行B程序
A程序和B程序共享一个数据文件。
A => 来自用户的输入,然后将一个数字写入数据文件。 B => 从 A 写入的数据文件中读取数字
我想做的是在A程序中输入-1并退出A程序的实现
另外,B程序中的进程使用信号完成。
结构--
A 将 sigusr1 发送给 B B 发送信号给 A
例子
A : -1 (input) , 打印再见
B : 再见
如何为此将 A 程序 a sigusr1 发送给 B 程序?
我想了几天。
谢谢。
一个程序
do {
scanf("%d",&num);
if(num > 0)
{
lseek(fd,0,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,0,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
之外或代替 SIGUSR1
。
比较有可能的是
- 使用不同的信号告诉 B 终止,例如
SIGUSR2
,甚至SIGTERM
。 - 在文件中记录 A 已经用来与 B 进行数据通信的特殊值或代码
但是你当然需要 B 来处理 SIGUSR1
和你发送的任何其他信号。由于您已经在 A 中处理信号,我认为您可以在 B 中做类似的事情。