Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
创建一个进程的C程序,该进程被阻塞直到终止_C_Linux - Fatal编程技术网

创建一个进程的C程序,该进程被阻塞直到终止

创建一个进程的C程序,该进程被阻塞直到终止,c,linux,C,Linux,如何在C中创建一个进程并处理它的状态 我想知道如何创建一个流程。 我想知道如何将此进程置于阻塞状态。 我想知道如何将此过程置于僵尸状态。 关于如何在C上使用进程的指南会很有帮助,我就是找不到。这样我就可以自己回答这些问题了 我一直在玩ps来了解进程的状态,但不知道如何开始 我在Linux上工作,对不起,我的英语不好。使用fork创建一个子进程-您的程序本身在进程中运行 将进程置于阻止状态:-使用睡眠或发布阻止写-读手册以获取更多信息-不知道“阻止”到底是什么意思 创建一个僵尸分支,然后退出程序。

如何在C中创建一个进程并处理它的状态

我想知道如何创建一个流程。 我想知道如何将此进程置于阻塞状态。 我想知道如何将此过程置于僵尸状态。 关于如何在C上使用进程的指南会很有帮助,我就是找不到。这样我就可以自己回答这些问题了

我一直在玩ps来了解进程的状态,但不知道如何开始


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

使用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手册页中的注释部分:


int main{while1;return 0;}你想要Linux版的Windows CREATE_SUSPENDED,它可能根本不存在。@H2CO3不,不是这样。我的C不是很好,我懂Java,但我是从C开始的。问题是我找不到关于如何在C中更改进程状态的指南。这就是为什么我要问的。谢谢,我从进程状态开始,只知道hot-to-fork并做一些思考。您的回答是有用的。所谓阻止,我的意思是:流程参与未知持续时间的活动,即等待将来的某个事件。示例事件:I/O操作完成或从其他进程收到消息。通过操作系统调用参与。@Rkan-为了简洁起见,我省略了include:include,include和dostuff,finish_程序只是占位符