0 / 0 / 0
Регистрация: 03.05.2015
Сообщений: 2
1

Не получается создать ветви процессов

09.06.2016, 21:51. Показов 529. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте! Не получается создать в программе ветви процессов в последовательности, изображенной на графике. Он выдает их в хаотичном порядке.

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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
#!/usr/bin/python
# -*- coding: utf-8 -*-
import os
print ("\nПорождение процесса 1\n") #Процесс 1 образовался от процесса 0(системного)
args = ("ps","-H")
pid = os.fork() 
if pid == -1 :
    print "Ошибка"
elif pid == 0:
    print('PID process: ', os.getpid())
    print('PPID process: ', os.getppid())
    pid = os.fork()
        if pid == -1 :
        print "Ошибка"
        if pid == 0:
            print ("\nПорождение процесса 2\n")
            print ('PID process: ',os.getpid())
            print ('PPID process: ',os.getppid())
        pid = os.fork()
            if pid == -1 :
            print "Ошибка"
            if pid == 0:
                print ("\nПорождение процесса 3 от 2\n")
                print ('PID process: ',os.getpid())
                print ('PPID process: ',os.getppid())
            os._exit(0)
        else:
            pid = os.fork()
            if pid == -1 :
            print "Ошибка"
            if pid == 0:
                print ("\nПорождение процесса 5 от 3\n")
                print ('PID process: ',os.getpid())
                print ('PPID process: ',os.getppid())
                os.execvp(args[0],args)
            os._exit(0)
    else:
        pid = os.fork()
        if pid == -1 :
            print "Ошибка"
        if pid == 0:
                print ("\nПорождение процесса 4 от 2\n")
                print ('PID process: ',os.getpid())
                print ('PPID process: ',os.getppid())
            os._exit(0)
        else:
            pid = os.fork()
            if pid == -1 :
                print "Ошибка"
                if pid == 0:
                print ("\nПорождение процесса 6 от 4\n")
                print ('PID process: ',os.getpid())
                print ('PPID process: ',os.getppid())
                os._exit(0)
            if pid == -1 :
                print "Ошибка"
                if pid == 0:
                print ("\nПорождение процесса 6 от 7\n")
                print ('PID process: ',os.getpid())
                print ('PPID process: ',os.getppid())
                os._exit(0)
os.wait()
Миниатюры
Не получается создать ветви процессов  
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.06.2016, 21:51
Ответы с готовыми решениями:

Создать структуру и использовать её в другой ветви?
В ветке case есть такой код: cout << "================== Ввод из файла==================" << endl;...

Как создать 5 процессов Калькулятора?
Как создать 5 процессов Калькулятора . Делаю цикл , а всё равно лишь один процесс запускается . ...

Создать генерацию дерева процессов
Мне нужно создать генерацию дерева процессов.Как это реализовать? #include <stdio.h> #include...

Как создать список запущеных процессов?
Как создать список запущеных процессов и по возможности поместить его в комбобокс???

1
Эксперт по компьютерным сетям
5889 / 3347 / 1033
Регистрация: 03.11.2009
Сообщений: 9,974
10.06.2016, 13:41 2
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
import os
 
 
def child(mn, pn):
    print('I am  child (', mn, '), my pid =', os.getpid(), 'and my father\'s (', pn, ') pid =', os.getppid())
 
print('I am parent ( 0 ), my pid =', os.getpid())
 
c = os.fork()                           # fork 0 -> 1
if c == 0:                              # if we are 1
    child(1, 0)
    c = os.fork()                       # fork 1 -> 2
    if c == 0:                          # if we are 2
        child(2, 1)
        c = os.fork()                   # fork 2 -> 3
        if c == 0:                      # if we are 3
            child(3, 2)
            c = os.fork()               # fork 3 -> 5
            if c == 0:                  # if we are 5
                child(5, 3)
        else:
            c = os.fork()               # fork 2 -> 4
            if c == 0:                  # if we are 4
                child(4, 2)
                c = os.fork()           # fork 4 -> 6
                if c == 0:              # if we are 6
                    child(6, 4)
                    c = os.fork()       # fork 6 -> 7
                    if c == 0:          # if we are 7
                        child(7, 6)
Код
I am parent ( 0 ), my pid = 41181
I am  child ( 1 ), my pid = 41182 and my father's ( 0 ) pid = 41181
I am  child ( 2 ), my pid = 41183 and my father's ( 1 ) pid = 41182
I am  child ( 3 ), my pid = 41184 and my father's ( 2 ) pid = 41183
I am  child ( 4 ), my pid = 41185 and my father's ( 2 ) pid = 41183
I am  child ( 5 ), my pid = 41186 and my father's ( 3 ) pid = 41184
I am  child ( 6 ), my pid = 41187 and my father's ( 4 ) pid = 41185
I am  child ( 7 ), my pid = 41188 and my father's ( 6 ) pid = 41187
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.06.2016, 13:41
Помогаю со студенческими работами здесь

В одном классе нужно создать массив, а в классе program его вывести. "Не все ветви кода возвращают значение"
В одном классе нужно создать массив, а в классе program его вывести, помогите, как разобраться ...

Нужно создать утилиту выводящую список запущенных процессов
Доброго времени суток господа, вот не могу решить задачку на языке Си, помогите плз. (нужно...

Манипулируя работой процессов выводящих свой номер создать файл
Добрый день. Нужна помощь по данному заданию: Программа порождает 3 процесса, каждый из которых...

Создать файл, содержащий список процессов системы, имеющих ненулевой приоритет
Как создать файл, содержащий список процессов системы, имеющих ненулевой приоритет?


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru