c - 如何模拟进程运行?

标签 c exec fork execvp sigint

所以我想创建一个进程并让它运行一段时间,然后再对其调用 SIGINT 并杀死它。

所以我所做的是创建一个struct pcb(进程控制 block ),当我运行这个进程时我设置

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

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

希望我的问题有意义,基本上我只是想知道如何在不执行任何操作的情况下保持进程运行,以便稍后可以将其终止。

谢谢!

最佳答案

听起来你想做的就是让一个进程永远运行而不做任何特别的事情(在这种情况下,问题的其余部分是无关紧要的)。

你可以简单地使用类似的东西:

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

这永远不会有任何作用。

关于c - 如何模拟进程运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29550944/

相关文章:

php - 如何在 ajax 调用期间运行 javascript?

c - Linux,C 将 cat 与 exec(3) 结合使用

fork - 是否有 fork 并与 D 中的子进程通信的示例?

c - 管道不能与 fork 循环工作

c - 为什么 scanf 接受的字符多于缓冲区中的空间?

c - 双指针在数组中被神秘地修改

使用 unsigned char 且不使用字符串将十进制转换为 16 位二进制

c - 如何设置 Autoconf 项目以使用 GTK 进行制作?

mysql - 警告 : system() [function. 系统]:无法在第 19 行执行空白命令

c - 当子进程执行 execvp 时,waitpid 未收到退出状态