我正在准备考试,正在做已经解决的练习。但是我在一个有关流程的问题上遇到了麻烦,因为我认为我做对了,但是答案与我的不符。这是以下问题:
下面是一个名为Agent_Smith.c的程序的代码。包括初始父进程在内,创建了多少个Agent_Smith进程?假设没有错误。
我知道只有子进程的pid = 0,而其父进程继承其实际的pid(!= 0)。所以我这样做:(假设smith = fork();是fork1等等。)
在练习中,它说进程 includes 的初始父进程是12,而我的进程是13,我不知道我在哪里做错了。我认为这是解决方案中的错误,但是我不确定,所以我想问一下。我是该网站的新手,如果操作不当,敬请原谅。
答案 0 :(得分:0)
我还找到12个进程。我不太了解您的绘图,但是如果所有叉子按程序顺序编号为1-6,这就是我的发现。进程按程序顺序进行编号。
P0 is parent
P0 -> fork1 P1
P1 -> fork2 P2
-> fork3 P3
-> fork4 P4
P2 -> fork3 P5
-> fork4 P6
P3 -> fork4 P7
P5 -> fork4 P8
P0 -> fork5 P9
-> fork6 P10
P9 -> fork6 P11
所以有12个进程P0-P11。
顺便说一句,切勿以图片形式提供代码。有多种方法可以内联格式化。
答案 1 :(得分:0)
让我们用Refused to connect to 'http://localhost:3001/v1/companies/1/items.json'
because it violates the following Content Security Policy directive:
"connect-src 'self' https: http://localhost:3000 ws://localhost:3000"
来表示父母。
因此,第一个fork()将生成一个新的子代,因此到目前为止,我们将有2个进程。
父项将获得大于0的值。因此它将进入for循环,接下来的2 p0
将生成3个新进程。所以到目前为止,我们有1个父级和4个新进程。
现在,第一个子进程将执行else语句。三个fork()
将产生总共8个过程,包括第一个孩子和7个新过程。最后,在if条件下生成的3个新进程中,在else条件下生成的7个新进程中,我们将获得1个父级,1个子级。因此共有12个进程。