Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
pito211
186 / 173 / 8
Регистрация: 22.03.2010
Сообщений: 612
#1

if else - C++

21.03.2011, 10:15. Просмотров 664. Ответов 3
Метки нет (Все метки)

здрасте! не могу понять один момент
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <string>
#include <sys/wait.h>
#include <iostream>
using namespace std;
 
int main(int argc, char *argv[]) {
    string command, *parameters;
    while (true) {
        int status;
        command.clear();
        cout << "comp1#: ";
        cin >> command;
        if (fork() != 0) {
            cout << "1" << endl;
            waitpid(-1, &status, 0);
        } else {
            cout << "2" << endl;
            execve(command.c_str(), 0, 0);
        }
    }
}
вывод -
1
2
как он мойет заходить одновременно и в иф и в елсе?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Day
1158 / 963 / 57
Регистрация: 29.10.2009
Сообщений: 1,385
21.03.2011, 10:23 #2
pito211, Там получаются 2 процесса. Один выводит "1", а другой "2"
1
slice
35 / 78 / 4
Регистрация: 04.11.2010
Сообщений: 249
21.03.2011, 10:27 #3
Day, +1

Цитата Сообщение от pito211 Посмотреть сообщение
как он мойет заходить одновременно и в иф и в елсе?
Это особая, уличная магия.
0
pito211
186 / 173 / 8
Регистрация: 22.03.2010
Сообщений: 612
21.03.2011, 10:52  [ТС] #4
Цитата Сообщение от Day Посмотреть сообщение
pito211, Там получаются 2 процесса. Один выводит "1", а другой "2"
То есть когда моя програмка доходит до 13 строки, она делают свою копию с таким же сегментом данных? то есть в дочернем процессе переменная command инициализированна тем же значением?
затем этот fork возвращает pid этой новой копии и она не равна нулю, поэтому он выводит 1. Затем предок ждёт когда звершится его потомок. Тем временем в потомке форк вернул 0, поэтому он вывел двойку. Я правильно понял?
1
21.03.2011, 10:52
Ответ Создать тему
Опции темы

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