如何在 C 中创建一个进程并使用它的状态?
- 我想知道如何创建一个流程。
- 我想知道如何将此进程置于阻塞状态。
- 我想知道如何将此过程置于僵尸状态。
关于如何在 C 上使用进程的指南会很有帮助,我只是找不到它。这样我就可以自己回答这些问题了。
我一直在玩 ps 来查看进程的状态,但真的不知道如何开始。
我在 Linux 上工作,对不起我的英语。
使用 fork() 创建一个子进程 - 你的程序本身无论如何都在一个进程中运行
将进程置于“阻塞”状态:- 使用 sleep() 或发出阻塞 write() - 阅读手册页以获取更多信息 - 不知道这里的“阻塞”到底是什么意思
创建一个僵尸 - fork() 然后退出程序。你可以从 ps 中“看到”僵尸
如果抛开对典型父子进程的理解,事情就变得简单了
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();
}
父母被阻止,直到孩子终止
通常你会使用信号量和共享内存来阻塞进程,但这是一个好的开始
@user1869399 - 我认为您提出了一个非常好的问题,我认为 Bug Catcher 给出了一个非常好的答案。
Bug Catcher 关于创建“僵尸”的建议的关键是在进程退出后分叉一个进程而不进行“清理”(即未能调用“waitpid()”)。
这是关于 Linux 进程状态的一个非常好的链接:
另外,请查看 waitpid() 的“手册页”中的“注释”部分: