在C语言中,你可以使用terminate()
函数来终止一个进程
#include<stdio.h>
#include <stdlib.h>
#include<signal.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/wait.h>
void handler(int signum) {
printf("Received signal %d, exiting...\n", signum);
exit(0);
}
int main() {
pid_t pid;
int status;
// 创建一个子进程
if ((pid = fork()) < 0) {
perror("fork error");
exit(1);
}
// 子进程执行这里的代码
if (pid == 0) {
// 设置信号处理器
signal(SIGTERM, handler);
// 子进程无限循环,直到收到SIGTERM信号
while (1) {
printf("Child process is running...\n");
sleep(1);
}
}
// 父进程执行这里的代码
else {
printf("Parent process created child process with PID %d\n", pid);
sleep(5);
// 向子进程发送SIGTERM信号
if (kill(pid, SIGTERM) < 0) {
perror("kill error");
exit(1);
}
// 等待子进程结束
wait(&status);
printf("Child process terminated with status %d\n", WEXITSTATUS(status));
}
return 0;
}
在这个示例中,我们首先创建了一个子进程。子进程会无限循环,直到收到SIGTERM
信号。我们为子进程设置了一个信号处理器,当收到SIGTERM
信号时,它会打印一条消息并退出。
父进程在创建子进程后,等待5秒钟,然后向子进程发送SIGTERM
信号。接着,父进程等待子进程结束,并打印子进程的退出状态。