【发布时间】:2015-04-09 23:44:36
【问题描述】:
所以我想创建一个进程并让它运行一段时间,然后调用 SIGINT 并杀死它。
所以我所做的是创建了一个 struct pcb(进程控制块),当我让这个进程运行时我设置了
mypcb->status = RUN //RUN would just be defined as 0, SUSPEND as 1, etc
基本上我有一个管理我所有进程的函数,我可能在这个函数中有类似
startprocess(processnum);
wait 10 seconds
killprocess(processnum);
然后在我的 startprocess 函数中我调用 fork,而在子进程中(当 fork() == 0 时),我希望让这个进程无限期地运行。我知道这可能可以通过使用 execvp 来完成,但我不想将上下文切换到另一个 exe 文件,我只想保持进程运行,或者至少让它看起来像子进程还活着,这样我可以返回并在我的 killprocess 函数中对 pid 调用 SIGINT。
注意我把每个进程的pid都保存在了
mypcb->pid
所以我不需要传递任何东西,我只需要一种方法来保持进程运行,这样我就可以回去杀死它。
希望我的问题是有道理的,基本上我只是想知道如何在不做任何事情的情况下保持进程运行,以便以后可以杀死它。
谢谢!
【问题讨论】: