创建五个子进程,并实现输入回车或者输入ctrl+c,将创建的五个进程全部杀死,在ubuntn上如何用c语言实现
时间: 2023-06-09 12:02:50 浏览: 79
c代码创建,杀死,遍历进程
好的,我明白了。对于您的问题,可以使用fork函数来创建子进程,并通过信号处理函数来捕获用户输入的回车或者ctrl c信号,并在信号处理函数内部调用kill函数杀死五个子进程。
以下是示例代码:
```
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <signal.h>
#include <sys/wait.h>
#define NUM_CHILDREN 5
pid_t child_pids[NUM_CHILDREN];
void sighandler(int signal) {
if(signal == SIGINT || signal == SIGTERM) {
printf("Received termination signal, killing child processes...\n");
for(int i = 0; i < NUM_CHILDREN; i++) {
if(child_pids[i] > 0) {
kill(child_pids[i], SIGTERM);
waitpid(child_pids[i], NULL, 0);
}
}
exit(0);
}
}
int main() {
printf("Press enter or ctrl-c to kill child processes...\n");
// Fork child processes
for(int i = 0; i < NUM_CHILDREN; i++) {
pid_t pid = fork();
if(pid == 0) {
// Child process
while(1) {
printf("Child process %d running...\n", i);
sleep(1);
}
} else {
// Parent process
child_pids[i] = pid;
}
}
// Set up signal handler
signal(SIGINT, sighandler);
signal(SIGTERM, sighandler);
// Wait for user input
while(1) {
char c = getchar();
if(c == '\n') {
break;
}
}
// User pressed enter, kill child processes
sighandler(SIGINT);
}
```
可以编译并在ubuntu上运行这个程序,用ctrl-c或者回车键来杀死子进程。
阅读全文