c语言写一个进程A,再写一个进程B,测试进程A,给进程B发送不同的信号,查看B进程的现象
时间: 2024-03-01 11:54:55 浏览: 71
深入剖析Android中init进程实现的C语言
好的,以下是一个简单的C语言程序示例,演示如何在进程A中发送不同的信号给进程B,以查看B进程的现象。
进程A代码:
```c
#include <stdio.h>
#include <unistd.h>
#include <signal.h>
int main() {
// 定义进程B的进程号
pid_t pid = 12345;
// 向进程B发送信号
kill(pid, SIGUSR1);
printf("Sent SIGUSR1 to process B\n");
sleep(1);
kill(pid, SIGUSR2);
printf("Sent SIGUSR2 to process B\n");
sleep(1);
kill(pid, SIGTERM);
printf("Sent SIGTERM to process B\n");
return 0;
}
```
进程B代码:
```c
#include <stdio.h>
#include <unistd.h>
#include <signal.h>
// 信号处理函数
void signal_handler(int signum) {
if (signum == SIGUSR1) {
printf("Process B received SIGUSR1\n");
} else if (signum == SIGUSR2) {
printf("Process B received SIGUSR2\n");
} else if (signum == SIGTERM) {
printf("Process B received SIGTERM\n");
_Exit(0);
}
}
int main() {
// 注册信号处理函数
signal(SIGUSR1, signal_handler);
signal(SIGUSR2, signal_handler);
signal(SIGTERM, signal_handler);
// 进入死循环,等待接收信号
while (1) {
sleep(1);
}
return 0;
}
```
当进程A运行时,它将向进程B发送三个不同的信号:SIGUSR1、SIGUSR2和SIGTERM。进程B将接收这些信号并打印相应的消息。
你可以将以上代码保存到两个不同的.c文件中,并使用gcc编译它们。然后在命令行中分别运行它们,以测试它们的行为。
阅读全文