Форум программистов, компьютерный форум, киберфорум
Python
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
1 / 1 / 0
Регистрация: 09.11.2017
Сообщений: 37
1

Работа с процессами. Породить процессы, формируя генеалогическое дерево согласно варианту...

04.04.2019, 22:12. Показов 1425. Ответов 2

Написать программу, которая будет реализовывать следующие функции:
- сразу после запуска получает и сообщает свой ID и ID родительского процесса;
- перед каждым выводом сообщения об ID процесса и родительского процесса эта информация
получается заново;
- порождает процессы, формируя генеалогическое дерево согласно варианту, сообщая, что
"процесс с ID таким-то породил процесс с таким-то ID";
- перед завершением процесса сообщить, что "процесс с таким-то ID и таким-то ID родителя
завершает работу";
- один из процессов должен вместо себя запустить программу, указанную в варианте задания.

0 1 1 2 2 5 6 - мое древо
в 3 процессе должен запуститься вот эта программа pwd

все работает нормально, но проблема в завершении процессов, от которых создаются дети. Преподаватель сказал, что нужно применить os.wait.

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
#!/usr/bin/python
# -*- coding: utf-8 -*-
import os
print ('Процесс №1 с ID: ', os.getpid(), 'порожденный процессом родителем c ID', os.getppid())
pid = os.fork()#создание процесса №2 из процесса №1
if pid == -1:
    print ('Ошибка!')
elif pid == 0:
    print ('Процесс №2 с ID: ', os.getpid(), 'порожденный процессом родителем №1 c ID', os.getppid())
    pid = os.fork()#создание процесса №4 из процесса №2
    if pid == -1:
        print ('Ошибка!')
    elif pid == 0:
        print ('Процесс №4 с ID: ', os.getpid(), 'порожденный процессом родителем №2 c ID', os.getppid())
        print ('Процесс №4 с ID: ', os.getpid(), 'и ID родителя №2', os.getppid(),'завершил свою работу')
        os._exit(0)#завершаем процесс №4
    else:
        pid = os.fork()#создание процесса №5 из процесса №2
        if pid == -1:
            print ('Ошибка!')
        elif pid == 0:
            print ('Процесс №5 с ID: ', os.getpid(), 'порожденный процессом родителем №2 c ID', os.getppid())
            pid = os.fork()#создание процесса №6 из процесса №5
            if pid == -1:
                    print ('Ошибка!')
            elif pid == 0:
                print ('Процесс №6 с ID: ', os.getpid(), 'порожденный процессом родителем №5 c ID', os.getppid())
                pid = os.fork()#создание процесса №7 из процесса №6
                if pid == -1:
                    print ('Ошибка!')
                elif pid == 0:
                    print ('Процесс №7 с ID: ', os.getpid(), 'порожденный процессом родителем №6 c ID', os.getppid())
                    print ('Процесс №7 с ID: ', os.getpid(), 'и ID родителя №6', os.getppid(),'завершил свою работу')
                    os._exit(0)#завершаем процесс №7
else:
    pid = os.fork()#создание процесса №3 из процесса №1
    if pid == -1:
        print('Error')
    elif pid == 0:
        print ('Процесс №3 с ID: ', os.getpid(), 'и ID родителя №1 c ID', os.getppid(),'завершил свою работу')
        args = ("-L", "-P")
        os.execvp("pwd", args)
        os._exit(0)#завершаем процесс №3
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.04.2019, 22:12
Ответы с готовыми решениями:

[C] Породить дочерние процессы
Нужно что-бы отцовский процесс породил трех сыновей, а каждый сын печатает свой пид и пид двух...

Заполнить массив значениями согласно варианту
Задания: 1.Заполнить массив значениями согласно варианту. Результат в виде таблицы значений...

генеалогическое дерево на C++
Помогите пожалуйста с утра сижу использую бинарное дерево.Не получаеться с вводом когда вожу...

Генеалогическое дерево
Подскажите пожалуйста с помощью чего сделать вывод информации и соединять по родству??? Может есть...

__________________

Записывайтесь на профессиональные курсы Fullstack-разработчиков на Python
2
Эксперт Python
4454 / 1888 / 343
Регистрация: 17.03.2012
Сообщений: 9,710
Записей в блоге: 5
08.04.2019, 13:07 2
В чём проблема-то?
0
1 / 1 / 0
Регистрация: 09.11.2017
Сообщений: 37
12.04.2019, 08:29  [ТС] 3
Нужно завершить процессы, используя os.wait(). Уже все сделал, вставив в конце цикл while
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.04.2019, 08:29

Заказываю контрольные, курсовые, дипломные работы и диссертации здесь.

Генеалогическое дерево
Всем добрый вечер(утро,день,ночь) Есть задание : Реализовать Генеалогическое дерево. Паспортные...

Генеалогическое дерево
Подскажите пожалуйста с помощью чего сделать вывод информации и соединять по родству??? Может есть...

Вывести на экран фигуру согласно варианту задания
Вывести на экран фигуру согласно варианту задания (Рисунок 2). Обеспечить ее перемещение по экрану...

Согласно своему варианту реализовать динамическую структуру
Согласно своему варианту реализовать динамическую структуру, работающую с любым типом данных,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.