![]() |
|
Модераторы: korob2001, ginnie |
![]()
|
|
| Danissimo |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 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? Это блокирующий вызов? Асинхронный? Асинхронный и убивающий? Перловым спекописателям памятник ставить надо. Или телепатом становиться =( |
|||
|
||||
| Sartorius |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1568 Регистрация: 18.7.2006 Где: Ivory tower Репутация: нет Всего: 37 |
Это значит, что если ты вызовешь exec ()- то в свой процесс больше не вернешься. Вызывай sysem().
|
|||
|
||||
| Danissimo |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 150 Регистрация: 14.8.2006 Где: Санкт-Петербург Репутация: 1 Всего: 1 |
А что станет с моим процессом? Заблокируется форэва? Или умрет немедленно? Если умрет, то с каким кодом возврата?
|
|||
|
||||
| amg |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1145 Регистрация: 3.8.2006 Где: Новосибирск Репутация: 38 Всего: 50 |
Вообще в таких вещах я не шибко разбираюсь, но есть смутное подозрение, что полезность exec больше на тех операционных системах, в которых существуют процессы. Лучше почитать у основоположников: "Программирование на Perl" Это сообщение отредактировал(а) amg - 16.9.2006, 11:44 |
|||
|
||||
| Danissimo |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 150 Регистрация: 14.8.2006 Где: Санкт-Петербург Репутация: 1 Всего: 1 |
Практически обнаружено, что создается новый процесс, а старый умирает. У них разные пиды. Но, как я уже успел заметить, в перле на практические результаты полагаться не стоит, так как у разных людей один и тот же код работает по-разному.
Вопрос, собсно, возник из-за того, что синхронная и асинхронная модели программирования различаются. Вот мне и не понятно, exec синхронно запускает другой процесс или нет. Выход есть, можно всегда запрограммировать, полагаясь на возмодное асинхронное поведение, но это сложнее =)) Вобщем, вопрос еще открыт, хотя первоначальную свою актуальность утратил. |
|||
|
||||
| amg |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1145 Регистрация: 3.8.2006 Где: Новосибирск Репутация: 38 Всего: 50 |
Это сообщение отредактировал(а) amg - 18.9.2006, 10:55 |
|||
|
||||
| Danissimo |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 150 Регистрация: 14.8.2006 Где: Санкт-Петербург Репутация: 1 Всего: 1 |
На Windows. А че?
|
|||
|
||||
| amg |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1145 Регистрация: 3.8.2006 Где: Новосибирск Репутация: 38 Всего: 50 |
Perl заточен прежде всего под Unix, поэтому те его команды, которые вызывают системные функции, под Windows могут вести себя не так. Например, в Windows, насколько мне известно, нет процессов, там срэды, отсюда, наверное, и проблемы с exec. В linux exec ведет себя в точности так, как написано в документации.
|
|||
|
||||
| $tatic |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 651 Регистрация: 28.1.2005 Репутация: нет Всего: 22 |
Конечно, ведь exec() - это в *nix системная функция. Она на уровне ядра реализована. А в винде она эмулироваться будет.
|
|||
|
||||
![]()
|
| Правила форума "Perl" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Perl: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |