+ Ответить в теме
Показано с 1 по 2 из 2

Тема: С в Linux

  1. #1
    Иван Петров12 is on a distinguished road
    Регистрация
    11.04.2018
    Сообщений
    1
    Вес репутации
    0

    По умолчанию С в Linux

    Процесс 1 порождает 7 потомков. Три из них делают, какое то действие, неважно какое
    Помогите исправить
    Код :
    1. #include <sys/types.h>
    2. #include <fcntl.h>
    3. #include <stdio.h>
    4. #include <unistd.h>    
    5. #include <stdlib.h>    
    6. void main(void)
    7. { int pid2, pid3, st;
    8. printf("Process 1, pid = %d:\n", getpid());
    9. pid2 = fork();
    10. if (pid2 == 0)
    11. { printf("Process 2, pid = %d:\n", getpid());
    12. pid3 = fork();
    13. if (pid3 == 0)
    14. { printf("Process 3, pid = %d:\n", getpid());
    15. sleep(2);
    16. printf("Process 3: end\n");
    17. }
    18. if (pid3 < 0) printf("Cann't create process 3: error %d\n", pid3);
    19. wait(&st);
    20. printf("Process 2: end\n");
    21. }
    22. else
    23. { if (pid2 < 0) printf("Cann't create process 2: error %d\n", pid2);
    24. wait(&st);
    25. printf("Process 1: end\n");
    26. }
    27. exit(0);    
    28. }
    Последний раз редактировалось Иван Петров12; 11.04.2018 в 18:52.

  2. По умолчанию

     
    Хотите избавиться от рекламы? Зарегистрируйтесь
  3. #2
    Moderator Куратор
    system architect
    Romeo is on a distinguished road Аватар для Romeo
    Регистрация
    02.03.2004
    Адрес
    Крым, Севастополь
    Возраст
    37
    Сообщений
    3,091
    Вес репутации
    21

    По умолчанию Re: С в Linux

    Судя по заданию, дочерние процессы должен порождать только главный процесс, дочерние процессы не должны порождать поддочерние процессы. Значит все порождения должны происходить в том случае, если первый fork был > 0. Ну и в количестве вызовов fork здесь тоже как бы нехватка. Их должно быть всего 7 штук: один сразу и ещё 6 внутри проверки, что первый возвращённый был > 0.
    Entites should not be multiplied beyond necessity @ William Occam
    ---
    Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
    ---
    Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.

+ Ответить в теме

Похожие темы

  1. MD5 in Linux
    Доброго времени суток :) Какие библиотеки есть для использования MD5 шифрования есть в Linux? гугл мало чем помог (может искать разучился я...
    от expelled в разделе C и C++
  2. Red Hat Linux & Windows XP
    У меня в компютере было установлено Windows XP. Потом я устаноновил Red Hat Linux на этом же винчестере. Что нужно сделать чтобы во время загрузки...
    от Artak в разделе Операционные системы
  3. Linux SW Development (SPb)
    В крупную компанию с мировым именем требуются специалисты различного уровня (Developer, Sr. Developer, SW Architect, Tech Leader) С/С++ под *nix...
    от it-dominanta в разделе Вакансии и заказы для программистов
  4. LINUX
    С помощю чего могу данние из Linux-а переписать в Windows(скажем в txt файл) чтоби там их отображать в диалоговом окне Visual C++
    от Artak в разделе Операционные системы
  5. Linux GUI
    С чего начать познание программирования GUI под Linux. Я немного прочитал про технологии QT и GTK. Собираюсь писать на С++. Подскажите каким путем...
    от Ananas в разделе C и C++

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения