Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Запуск нового процесса


Автор: Jcs 15.9.2004, 06:22
Доброго времени суток. Есть проблема с запуском нового процесса. К примеру, исполняемый файл валяется в текущей папке и называется "exe_param". Чтобы его запустить, я пишу
Код
_execl("exe_param","exe_param","first_arg","second_arg",NULL);

При запуске процесса точка выполнения почему-то не возвращается родительскому процессу, т.е. ни один оператор после этой строки не выполняется.
Попробовал использовать функцию system, там все нормально. Может быть проблема в семантике вызова функции _execl? И есть какие-то особенности?
Заранее спасибо.

Автор: chipset 15.9.2004, 06:51
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vccore98/html/_crt__spawn.2c_._wspawn_functions.asp?

Автор: LuckLess 15.9.2004, 20:45
Насколько я понимаю программируешь под юних..?
Дело в том , что системный вызов exec замещает ....хммм... как это слово умное... контекст процесса на тот . который бы получился при запуске исполняемого фаила(извини , что не по-русски фраза немного вышла), поетому ВСЕ что написано ниже exec какбы исчезает. Чтобы использовать exec , сначала надо использовать системный вызов fork() , который создает НОВЫЙ процесс , а уже потом в новом прооцессе использовать системный вфзов exec.
чтото вроде..
Код

int a=0;

a=fork();

if (a==0){
//здесь код дочернего процесса , так как в родительском процессе , а равно таму что ей вернул fork().
_execl("exe_param","exe_param","first_arg","second_arg",NULL);
}

//код родительского процесса..
.
.
.
.


Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)