Программа на C для отображения родительского и дочернего процесса отображает только дочерний процесс вместо родительского процесса - PullRequest
0 голосов
/ 19 октября 2018
#include<stdio.h>
#include<unistd.h>
#include<stdlib.h>

void main(){
        int a,pid;
        printf("Do you want to create a process? Press 1 for Yes ");
        scanf("%d",&a);
        if (a==1){
                fork();}
        else{printf("Fair enough");}

        printf("This should print twice");

        if (pid<0){printf(" Child process not created ");}

        else if (pid>0){printf(" This is the parent process ");}

        else{printf(" This is the child process ");}}

Приведенный выше код отображает следующий вывод

>Do you want to create a process? Press 1 for Yes 1
>This should print twice This is the child process This should print twice This is the child process

Однако мне нужен вывод, который при нажатии 1 отображает

>This should be printed twice
>This is child process
>This should be printed twice
>This is parent process

Может ли кто-нибудь указать, что логичноошибку я совершаю?

1 Ответ

0 голосов
/ 19 октября 2018

вы должны проверить pid, полученный с вилки, вот пример для дочернего / родительского кода:

int main(){

int  a, b;

pid_t pid;

a = 3;

b = 5;

pid = fork();

if (pid == -1)

{

    printf("ERROR IN FORK MAIN\n");

}

if(pid == 0)

{

   Add( a,b) ;/*a function for child to do*/

}

else
{

    printf("Parent Done\n");

}
          return 0;}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...