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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> как вывести сообщение и подолжить работу скрипта ? 
:(
    Опции темы
aleksnn
Дата 29.9.2005, 21:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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




GET http://script.cgi

Код

#!/usr/bin/perl
#script.cgi

print "start";

sleep 100;
exit;



как вывеси в ответ start и не ждать sleep ?

после форка родитель должен вывести страницу,а потомок работать
PM MAIL   Вверх
BlackLFL
Дата 29.9.2005, 21:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



перефразируйте вопрос, не понятно куда вывести ответ...
какую страницу должен вывести родитель?
PM WWW   Вверх
aleksnn
Дата 29.9.2005, 23:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



1 делаем запрос страницы браузером.
родитель
{
2 в ответ получаю фразу "скрипт начал работу".
3 закрывается коннект.
}
потомок
4 скрипт продолжает работу.
5 результат скрипта в файл.



PM MAIL   Вверх
Kiber_rat
Дата 30.9.2005, 03:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


MACMANIAC
**


Профиль
Группа: Участник
Сообщений: 276
Регистрация: 18.4.2002
Где: Ashdod, Israel

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



Попробуй написать
Код

print "start\n"

Похоже что со sleep есть маленький баг (а может фича) если небело перевода строки, то print срабатывает после sleep.


--------------------
Best regards!                                                             
@..@_____Ku6ep
=*=______\______KPbIC
Код
print join "",map{chr}(split/(\w{2})/,hex(int(2175.57302796298**2)))
PM WWW ICQ Skype Jabber YIM   Вверх
aleksnn
Дата 30.9.2005, 04:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Тут sleep приводился в качестве времени работы. Тоесть страница ждёт выполнения всего скрипта.А мне нужно было закрыть сокет сразу после принта и до sleepa.Ответ вроде нашёл - делать close всем , но STDERR мне нужен и как его взять незнаю.
PM MAIL   Вверх
BlackLFL
Дата 30.9.2005, 08:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Код

#!/usr/bin/perl -w
use strict;

print "Content-type: text/plain\n\n";
print "Демон запущен...\n";

require 'sys/syscall.ph';
fork() && exit;

close STDOUT;
close STDERR;
close STDIN;

syscall(&SYS_setsid);

$SIG{'INT'} = $SIG{'QUIT'} = $SIG{'TERM'} = 'quit';
$SIG{'HUP'} = 'ignore';

sub quit {
exit(0);
}


my @ARG;
my @result=`script.pl @ARG` or die $? . $!;
....


В дополнение читаем Как сделать так, чтобы скрипт работал в фоновом режиме, как демон?

Это сообщение отредактировал(а) BlackLFL - 30.9.2005, 08:39
PM WWW   Вверх
aleksnn
Дата 30.9.2005, 22:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Ещё вопрос.
Поясните остаётся ли что то после exit в таблице процессов.
И что делает SYS_setsid я понимаю новую сессию а зачем это.
PM MAIL   Вверх
BlackLFL
Дата 1.10.2005, 09:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



По ссылки, которую я дал, есть ответ
Цитата

# Создаем новую сессию и становимся лидером
# группы процессов, чтоб нас случайно не прибили
syscall(&SYS_setsid);


Цитата

Поясните остаётся ли что то после exit в таблице процессов.

после какого именно exit? после fork появляеться новый процесс.
PM WWW   Вверх
aleksnn
Дата 1.10.2005, 21:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Вот и спрашиваю кто и почему может прибить.

sub quit {
# Помещаем сюда код для корректного
# прекращения работы
...
exit(0);
}
после exit(0); может остатся зомби ?
PM MAIL   Вверх
BlackLFL
Дата 3.10.2005, 18:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



это делается,что бы Вы стали лидером,а не считались зомби от родителя (родитель же умирает).

после exit(0) вроде не должно остаться зомби,я к сожалению не особо в этой области силет еще...
PM WWW   Вверх
aleksnn
Дата 4.10.2005, 11:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Возможно пригодится.
Нашёл в ActiveState прекрастный пример работы fork.
C:\Perl\eg\fork\forker.pl
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl"
korob2001
sharq
  • В этом разделе обсуждаются общие вопросы по языку Perl
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Если ваш вопрос относится к CGI программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", можно скачать здесь


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

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


 




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


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

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