Форум программистов, компьютерный форум CyberForum.ru

if else - C++

Восстановить пароль Регистрация
 
pito211
 Аватар для pito211
186 / 173 / 8
Регистрация: 22.03.2010
Сообщений: 612
21.03.2011, 10:15     if else #1
здрасте! не могу понять один момент
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
как он мойет заходить одновременно и в иф и в елсе?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Day
 Аватар для Day
1149 / 954 / 57
Регистрация: 29.10.2009
Сообщений: 1,384
21.03.2011, 10:23     if else #2
pito211, Там получаются 2 процесса. Один выводит "1", а другой "2"
slice
32 / 75 / 4
Регистрация: 04.11.2010
Сообщений: 249
21.03.2011, 10:27     if else #3
Day, +1

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

Текущее время: 03:24. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru