在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
信號。接著,父進程等待子進程結束,并打印子進程的退出狀態。