Форум программистов, компьютерный форум, киберфорум
Наши страницы
Python
Войти
Регистрация
Восстановить пароль
 
Дайвер
0 / 0 / 0
Регистрация: 03.05.2015
Сообщений: 2
#1

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

09.06.2016, 21:51. Просмотров 249. Ответов 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
Миниатюры
Не получается создать ветви процессов  
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.06.2016, 21:51
Ответы с готовыми решениями:

Не получается создать файл
open('/test.txt','w') Пишу вот так и файл не создается и выдает ошибку...

Что делать если не получается создать приложение в Джанго?
Я купил домен и хостинг с поддержкой питон/джанго. Создал корневую папку для...

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

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

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

1
Jabbson
Эксперт по компьютерным сетям
3348 / 2423 / 746
Регистрация: 03.11.2009
Сообщений: 7,759
Записей в блоге: 3
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
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.06.2016, 13:41

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

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

Создать текстовый файл, содержащий список выполняемых процессов у которых BasePriority > 7
Здравствуйте, требуется помощь с задачами, которые нужно выполнить в PowerShell...


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

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

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