LINUX.ORG.RU

Почему execl выходит из процесса?

 


0

1

Форкаю процесс, в нём запускаю с помощью execl другую программу. Делаю это в цикле:

pid_t pid = fork();
if (pid == 0) {
    while(1) {
        execl(...);
    }
}

Казалось бы после завершения выполнения execl() цикл должен заново запустить execl(), но не тут то было. Просто завершается форкнутый процесс. Если выполняю через system(), то всё работает нормально, но нужно через execl().

Почему так происходит?

Может, в документацию надо заглянуть?

anonymous
()

цикл должен заново

А хуй тебе. Нихуя не должен

anonymous
()

man execl

The exec() family of functions replaces the current process image with a new process image. The functions described in this manual page are front-ends for execve(2). (See the manual page for execve(2) for further details about the replacement of the current process image.)

Deleted
()

exec() замещает вызвавший процесс другим, согласно аргументам. и соответственно, вызвавший завершается.

system() сам сначала форкает, потом замещает, т.е. вызвавший процесс остается.

короче, тебе нужно имплементировать system(): fork(), waitpid(), exec()

conalex ★★★
()
Последнее исправление: conalex (всего исправлений: 2)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.