-3

如何在 C 中创建一个进程并使用它的状态?

  • 我想知道如何创建一个流程。
  • 我想知道如何将此进程置于阻塞状态。
  • 我想知道如何将此过程置于僵尸状态。

关于如何在 C 上使用进程的指南会很有帮助,我只是找不到它。这样我就可以自己回答这些问题了。

我一直在玩 ps 来查看进程的状态,但真的不知道如何开始。

我在 Linux 上工作,对不起我的英语。

4

3 回答 3

2

使用 fork() 创建一个子进程 - 你的程序本身无论如何都在一个进程中运行

将进程置于“阻塞”状态:- 使用 sleep() 或发出阻塞 write() - 阅读手册页以获取更多信息 - 不知道这里的“阻塞”到底是什么意思

创建一个僵尸 - fork() 然后退出程序。你可以从 ps 中“看到”僵尸

于 2012-12-01T22:03:19.363 回答
2

如果抛开对典型父子进程的理解,事情就变得简单了

childpid=fork();
switch (childpid){
case 0 : //normally considered the child, but we will use it to continue on
     finish_program();
     return(0);
case -1 : //error occurred
default : //normally considered the parent, but our "blocked" process
     wait(childpid); //waits for the child process to terminate
     dostuff();
}

父母被阻止,直到孩子终止

通常你会使用信号量和共享内存来阻塞进程,但这是一个好的开始

于 2012-12-01T22:04:05.743 回答
1

@user1869399 - 我认为您提出了一个非常好的问题,我认为 Bug Catcher 给出了一个非常好的答案。

Bug Catcher 关于创建“僵尸”的建议的关键是在进程退出后分叉一个进程而不进行“清理”(即未能调用“waitpid()”)。

这是关于 Linux 进程状态的一个非常好的链接:

另外,请查看 waitpid() 的“手册页”中的“注释”部分:

于 2012-12-01T22:08:04.280 回答