【发布时间】:2016-03-18 07:04:40
【问题描述】:
我想创建一个程序:
- 创建子进程
- 列出所有子进程
- 读取 PID 以终止子进程之一
- 再次列出所有子进程。
我的代码:
#include <sys/types.h>
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
#include <sys/wait.h>
#include <string.h>
int main(void) {
int c = 0;
printf("How many: ");
scanf("%d", & c);
int i = 0;
for (i = 1; i <= c; i++) {
pid_t pid = fork();
if (pid == 0) {
exit(0);
}
}
ListOfChildren();
int t;
printf("Kill child: ");
scanf("%d", & t);
char test[50];
snprintf(test, sizeof(test), "kill -15 %d", t);
system(test);
ListOfChildren();
return 1;
}
int ListOfChildren() {
char str[50] = "ps -o pid --ppid ";
char ppid[7];
sprintf(ppid, "%d", getpid());
strcat(str, ppid);
system(str);
return 1;
}
它创建了一些进程,但最后一个进程不存在?我不能杀人 甚至一个都没有……为什么当我想要 3 个时它显示 4 个进程?
【问题讨论】:
标签: c ubuntu process child-process