使用 fork 创建 num 个进程,然后删除一些我不会使用的进程

Creating num processes with fork and then deleting some that i will not use

好吧,我正在制作一个程序,我正在用 fork 创建一些子进程,让用户决定他们的数量,这样

for(int i=1;i<=number;i++){
        pid_t pid;
        if((pid=fork())<0){
            perror("fork failed");
        }else if(pid==0){ //is a child
            exit(0);
        }
    }
for(int i=1;i<=number;i++)
        wait(NULL);

如果用户希望我创建 5 个,我创建了它们,但稍后在我的程序中我只想使用前 4 个让我说,我如何 "delete" 最后一个过程?

您可以使用 kill:

#include <sys/types.h>
#include <signal.h>
kill(child_pid, SIGKILL);

编辑

如果您希望 child 进程在退出前进行一些清理,请改用 SIGTERM,并在 child 进程中实现信号处理程序。 Parent:

kill(child_pid, SIGTERM);

Child:

void on_sig_term(int sig_num)
{
    \ cleanup
    return;
}
signal(SIGTERM, on_sig_term);