Как изменить код в соответствии с выводом Linux - PullRequest
0 голосов
/ 18 марта 2020

Приведенный ниже код выводит выходные данные PID дочерних и родительских элементов, однако необходимо, чтобы они выглядели больше как пример выходных данных ниже. Как я мог изменить свой код, чтобы это произошло? Любая помощь будет принята с благодарностью.

parent process: counter=1

child process: counter=1

parent process: counter=2

child process: counter=2

Код (отредактирован, чтобы исправить пропущенную точку с запятой и сделать более читабельным):

#include<stdio.h>
#include<unistd.h>
#include<stdlib.h>

int main(void) {
    int pid;

    pid = fork();

    if (pid < 0)
    {
        printf("\n Error ");
        exit(1);
    }
    else if (pid == 0)
    {
        printf("\n Child Process ");
        printf("\n Pid is %d ", getpid());
        exit(0);
    }
    else
    {
        printf("\n Parent process ")
        printf("\n Pid is %d ", getpid());
        exit(1);
    }
}

1 Ответ

0 голосов
/ 18 марта 2020

В вашем коде отсутствует ;, поэтому он не будет компилироваться без ошибок. Кроме того, l oop не выводит нужный вам текст.

Вместо этого рассмотрим следующее:

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>

int
main()
{
        pid_t pid;

        char *child  = "child";
        char *parent = "parent";
        char *me;

        pid = fork();

        if (pid < 0) {
                perror("fork()");
                exit(EXIT_FAILURE);
        } else if (pid == 0)
                me = child;
        else
                me = parent;

        for (int i = 0; i < 2; ++i)
                printf("%s: counter is %d\n", me, i + 1);

        return EXIT_SUCCESS;
}

Это вызывает fork() и определяет, является ли текущий процесс дочерним. или родитель. В зависимости от того, что это, мы указываем me на правильную строку и вводим короткий l oop, который просто печатает нашу строку и счетчик.

Вывод может быть

parent: counter is 1
parent: counter is 2
child: counter is 1
child: counter is 2
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...