使用 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);
好吧,我正在制作一个程序,我正在用 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);