выполнить несколько процессов из основного процесса

Я хочу создать несколько процессов из одного главного процесса. Я знаю, что хочу использовать функцию из семейства exec, но, похоже, она не выполняет предварительную обработку так, как я намеревался. Кажется, что exec () является блокирующим вызовом, или, может быть, я просто неправильно его использую. Во всяком случае, на код:

const char* ROUTERLOCATION = "../../router";
int main(int argc, char** argv) {
manager manager;
vector<string> instructions = manager.readFile(argv[1]);
...
//file gives me the number of proceses i want to spawn and that value goes in
//rCount
for(int i = 0; i < rCount; i++){
cout << "creating:" << i << endl;
execl(ROUTERLOCATION, "",NULL);
}
}

Вывод, который я вижу:

creating:0
HI!!!

И тогда все выходит изящно. Могу ли я не создавать более одного процесса, используя execl()?

Кроме того, я хотел бы общаться с каждым из этих процессов, поэтому я не хочу блокировать их во время работы этих процессов.

0

Решение

Вам нужно fork в вашем главном процессе вызов в дочерних процессах execl, (exec Семейство функций заменяет ваш текущий образ процесса новым процессом, поэтому, следовательно, ваш цикл for никогда не завершается.)

2

Другие решения

призвание exec() означает, что ваша текущая программа больше не существует. Возможно, вы захотите создать новый процесс, используя fork() а затем позвоните exec() в этом так, чтобы exec() заменяет ваш новый процесс, и ваш основной процесс все еще работает так, как вы намереваетесь.

пример:

pid_t pid = fork();
if (pid == 0) {// child
execl();
} else { // parent
}
1

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector