2016-10-25 33 views
-3
#include <sys/types.h> 
#include <stdio.h> 
#include <unistd.h> 

int value = 5; 
int main() 
{ 
    pid t pid; 
    pid = fork(); 
    if (pid == 0) { 
    value += 15; 
    return 0;} 
    else if (pid > 0) { /* parent process */ 
     wait(NULL); 
    printf("PARENT: value = %d",value); /* LINE A */ 
       return 0;}} 

创建了多少个子进程并在A行中打印了哪些值?在以下代码中创建了多少个子进程

+3

什么阻止你简单地试用它? – Ari0nhh

+0

请注意,Pico风格并不是真正可接受的(可接受的)C代码布局。请选择[Allman或1TSB]中的一个(https://en.wikipedia.org/wiki/Indent_style),除非有令人信服的理由否则 - 您应该准备好解释为什么这些原因是令人信服的。随着显示的草图缩进,你甚至不会紧跟Pico风格。 –

+0

父进程将打印5.仅创建一个进程。 –

回答

1

你试过了吗?

只创建单个子项并且父项打印值5,因为它在父进程中未被修改。全局变量在每个进程中都有一个副本,它们不共享。

+0

是的,其实我刚刚开始学习C,我只是对儿童过程和父母过程有点混淆。 – Alex

+0

“单个孩子被创建并打印5”错误:孩子不打印任何东西。孩子的Fork返回值为0.“因为它在父进程中没有修改”错误:父/子进程可以根据需要修改值,因此它不会影响其他进程,因为“值”是一个全局变量,它是重复的在叉子。每个过程都有自己的价值。 –

+1

@TonyTannous:正确的评论,托尼,我承认它可能会混淆我原来的句子。我修改了这句话。 –

相关问题