如果使用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中进行类似的操作。