如果在 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 中做类似的事情。