Модераторы: korob2001, ginnie
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Переведите на русский спеку на exec 
:(
    Опции темы
Danissimo
Дата 15.9.2006, 17:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 150
Регистрация: 14.8.2006
Где: Санкт-Петербург

Репутация: 1
Всего: 1



Прочитал три раза. В первой же строчке написано:

The exec function executes a system command and never returns-- use system instead of exec if you want it to return.

Что они имеют в виду под never returns? Это блокирующий вызов? Асинхронный? Асинхронный и убивающий?

Перловым спекописателям памятник ставить надо. Или телепатом становиться =(
PM MAIL   Вверх
Sartorius
Дата 15.9.2006, 18:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1568
Регистрация: 18.7.2006
Где: Ivory tower

Репутация: нет
Всего: 37



 Это значит, что если ты вызовешь exec ()- то в свой процесс больше не вернешься.  Вызывай sysem().
PM MAIL ICQ   Вверх
Danissimo
Дата 15.9.2006, 18:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 150
Регистрация: 14.8.2006
Где: Санкт-Петербург

Репутация: 1
Всего: 1



А что станет с моим процессом? Заблокируется форэва? Или умрет немедленно? Если умрет, то с каким кодом возврата?
PM MAIL   Вверх
amg
Дата 16.9.2006, 11:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1145
Регистрация: 3.8.2006
Где: Новосибирск

Репутация: 38
Всего: 50



Цитата(Danissimo @  15.9.2006,  18:11 Найти цитируемый пост)
А что станет с моим процессом? Заблокируется форэва? Или умрет немедленно? Если умрет, то с каким кодом возврата?
После выполнения exec произойдет подмена: твоим процессом будет уже не скрипт, а программа, которую exec запустит. Если все нормально, то возврата обратно в скрипт не будет. Если что-то не так, то exec в любом случае возвратит "ложь", и узнать, что случилось, можно будет, проверив $!. 
Вообще в таких вещах я не шибко разбираюсь, но есть смутное подозрение, что полезность exec больше на тех операционных системах, в которых существуют процессы. Лучше почитать у основоположников: "Программирование на Perl"


Это сообщение отредактировал(а) amg - 16.9.2006, 11:44
PM MAIL   Вверх
Danissimo
Дата 18.9.2006, 08:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 150
Регистрация: 14.8.2006
Где: Санкт-Петербург

Репутация: 1
Всего: 1



Практически обнаружено, что создается новый процесс, а старый умирает. У них разные пиды. Но, как я уже успел заметить, в перле на практические результаты полагаться не стоит, так как у разных людей один и тот же код работает по-разному.

Вопрос, собсно, возник из-за того, что синхронная и асинхронная модели программирования различаются. Вот мне и не понятно, exec синхронно запускает другой процесс или нет.

Выход есть, можно всегда запрограммировать, полагаясь на возмодное асинхронное поведение, но это сложнее =))

Вобщем, вопрос еще открыт, хотя первоначальную свою актуальность утратил.
PM MAIL   Вверх
amg
Дата 18.9.2006, 10:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1145
Регистрация: 3.8.2006
Где: Новосибирск

Репутация: 38
Всего: 50



Цитата(Danissimo @  18.9.2006,  08:52 Найти цитируемый пост)
Практически обнаружено, что создается новый процесс, а старый умирает. У них разные пиды.
Проверял на Windows? Если да, то не зря у меня было подозрение о различной полезности exec на разных операционных системах.

Это сообщение отредактировал(а) amg - 18.9.2006, 10:55
PM MAIL   Вверх
Danissimo
Дата 18.9.2006, 11:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 150
Регистрация: 14.8.2006
Где: Санкт-Петербург

Репутация: 1
Всего: 1



На Windows. А че?
PM MAIL   Вверх
amg
Дата 18.9.2006, 14:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1145
Регистрация: 3.8.2006
Где: Новосибирск

Репутация: 38
Всего: 50



Perl заточен прежде всего под Unix, поэтому те его команды, которые вызывают системные функции, под Windows могут вести себя не так. Например, в Windows, насколько мне известно, нет процессов, там срэды, отсюда, наверное, и проблемы с exec. В linux exec ведет себя в точности так, как написано в документации.
PM MAIL   Вверх
$tatic
Дата 18.9.2006, 15:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 651
Регистрация: 28.1.2005

Репутация: нет
Всего: 22



Конечно, ведь exec() - это в *nix системная функция. Она на уровне ядра реализована. А в винде она эмулироваться будет.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl"
korob2001
sharq
  • В этом разделе обсуждаются общие вопросы по языку Perl
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Если ваш вопрос относится к CGI программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", можно скачать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0477 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.