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

компилятор GCC и процессы в ОС Linux, отблагодарю

11.06.2013, 02:39. Показов 3788. Ответов 0
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
кто сможет сделать легкую лабу
Написать программу, которая будет реализовывать следующие функции
...
порождает процессы, формируя генеалогическое дерево согласно варианту, сообщая, что "процесс с ID таким-то породил процесс с таким-то ID"
В столбце fork описано генеалогическое древо процессов: каждая цифра указывает на относительный номер (не путать с pid) процесса, являющегося родителем для данного процесса. Например, строка
0 1 1 1 3
означает, что первый процесс не имеет родителя среди ваших процессов (порождается и запускается извне), второй, третий и четвертый – порождены первым, пятый – третьим.
В столбце exec указан номер процесса, выполняющего вызов exec, команды для которого указаны в последнем столбце. Запускайте команду обязательно с какими-либо параметрами.

fork: 0 1 1 2 4 4 4; exec: 6; ls

ОТБЛАГОДАРЮ скайп Gembird.brest

пример для fork exec
0112255 1 date
C
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
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
include <unistd.h> 
#include <sys/types.h> 
#include <stdio.h> 
#include <stdlib.h> 
int main(){ 
    pid_t pid; 
    char *arg[] = {"/usr/bin/date", 0}; 
    printf("ID первого процесса = %d\nID родительского процесса = %d\n", getpid(), getppid()); 
execv(arg[0], arg); // exec() вызов команды date 
// Порождение второго процесса 
    printf("\n\tПорождение процесса №2\n"); 
    if ((pid = fork()) == -1) 
        printf("Ошибка!\n"); 
    else if (pid == 0) 
    { 
        //printf("\t\t\tДочерний процесс\n"); 
        printf("ID этого процесса = %d\nID родительского процесса = %d\n", getpid(), getppid());   
        // Порождение четвертого процесса 
        { 
            printf("\n\tПорождение процесса №4\n"); 
            if ((pid = fork()) == -1) 
                printf("Ошибка!\n"); 
            else if (pid == 0){ 
                printf("\t\t\tДочерний процесс\n"); 
                printf("ID этого процесса = %d\nID родительского процесса = %d\n", getpid(), getppid()); 
                printf("Завершился процесс: PID = %d, PPID = %d\n", getpid(), getppid()); 
                exit(0); 
            } 
            else 
                sleep(2); 
        } 
        // Порождение пятого процесса 
        {            
            printf("\n\tПорождение процесса №5\t\n"); 
            if ((pid = fork()) == -1) 
                printf("Ошибка!\n"); 
            else if (pid == 0) 
            { 
                printf("\t\t\tДочерний процесс\n"); 
                printf("ID этого процесса = %d\nID родительского процесса = %d\n", getpid(), getppid()); 
                // Порождение шестого процесса 
                { 
                    printf("\n\t\tПорождение процесса №6\t\n"); 
                    if ((pid = fork()) == -1) 
                        printf("Ошибка!\n"); 
                    else if (pid == 0) 
                    { 
                        printf("\t\t\tДочерний процесс\n"); 
                        printf("ID этого процесса = %d\nID родительского процесса = %d\n", 
                        getpid(), getppid());            
                        printf("Завершился процесс: PID = %d, PPID = %d\n", getpid(), getppid()); 
                        exit(0); 
                    } 
                    else 
                        sleep(2); 
                } 
                // Порождение седьмого процесса 
                { 
                    printf("\n\t\tПорождение процесса №7\t\n"); 
                    if ((pid = fork()) == -1) 
                        printf("Ошибка!\n"); 
                    else if (pid == 0) 
                    { 
                        printf("\t\t\tДочерний процесс\n"); 
                        printf("ID этого процесса = %d\nID родительского процесса = %d\n", 
                        getpid(), getppid());            
                        printf("Завершился процесс: PID = %d, PPID = %d\n", getpid(), getppid()); 
                        exit(0); 
                    } 
                    else 
                        sleep(2); 
                } 
                printf("Завершился процесс: PID = %d, PPID = %d\n", getpid(), getppid()); 
                exit(0); 
            } 
            else sleep(4); 
        } 
                printf("Завершился процесс: PID = %d, PPID = %d\n", getpid(), getppid()); 
                exit(0); 
    } 
    else sleep(4); 
// Порождение третьего процесса 
    printf("\nПорождение процесса №3\n"); 
    if ((pid = fork()) == -1) 
        printf("Ошибка!\n"); 
    else if (pid == 0) 
    { 
        printf("\t\t\tДочерний процесс\n"); 
        printf("ID этого процесса = %d\nID родительского процесса = %d\n", getpid(), getppid());   
        printf("Завершился процесс: PID = %d, PPID = %d\n", getpid(), getppid()); 
        exit(0); 
    } 
    else 
        sleep(4); 
 
    sleep(4); 
    return 0; 
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.06.2013, 02:39
Ответы с готовыми решениями:

Как узнать список target систем которые поддерживает компилятор gcc в Linux?
Как узнать список target систем которые поддерживает компилятор gcc в Linux? Что такое target...

gcc компилятор
есть код программы:#include &lt;limits&gt; #include &lt;iostream&gt; #include &lt;iomanip&gt; #include &lt;cstdlib&gt;...

gcc/c++ компилятор
в какую папку устанавливается компилятор gcc или g++ по умолчанию? Добавлено через 12 минут уже...

Компилятор gcc 4.8.1 не поддереживает C++11
Вот скрин с примером

0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.06.2013, 02:39
Помогаю со студенческими работами здесь

компилятор GCC для какоса
Подскажите (кто использует COIDE) установил программу (пытаюсь освоить) а вот с компилятором...

Не корректно работает компилятор gcc
изучаю язык си на линуксе. компилятор gcc. пишу простые программки. при вызове scanf ввожу значения...

компилятор GCC парит мозг
Вообщем проблема в том что кнопки - и + как-бы работают, но в переменную Pzad_prog постоянно...

Нужен компилятор под linux mint или linux ubuntu
Нужен компилятор под linux mint или linux ubuntu. Желательно голенький компилятор без редактора, и,...


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

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

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