如何模拟正在运行的进程?

时间:2015-04-09 23:44:37

标签: c exec fork execvp sigint

所以我想创建一个进程并使其保持运行一段时间,然后再调用它上面的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

所以我不需要传递任何东西,我只需要一种方法来保持进程运行所以我可以回去杀死它。

希望我的问题有道理,基本上我只是想知道如何在没有做任何事情的情况下保持一个进程运行,以便我可以在以后杀死它。

谢谢!

1 个答案:

答案 0 :(得分:0)

听起来你所要做的就是让一个过程永远无所事事(在这种情况下,问题的其余部分是无关紧要的)。

您可以使用以下内容:

while(1)
{
    /* no code in between the {} */
}

永远不会做任何事。