Просмотр сообщений

В этом разделе можно просмотреть все сообщения, сделанные этим пользователем.


Сообщения - mind4

Страницы: [1]
1
Perl / Как убить... процесс
« : 23 Августа 2005, 19:13:18 »
Имеется простейшая программа (см. ниже). Согласно идее - создается процесс, печатает свой pid, после чего сразу делает то что называется exit. После этого по идее операция kill(0, $pid) должна возвращать ложь. Кто объяснит мне почему возвращается not ложь?

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

my @processes;
$SIG{CHLD} = \'IGNORE\';
for (1..3)
{   if (not defined (my $pid = fork))
   {   print "failed to fork\\n";
   }   elsif ($pid == 0)
   {   # child
      print "child pid: $$\\n";
      exit;
   }   else
   {   # parent
      push @processes, $pid;
   }
}

for (1..6)
{   print "$_: ".(kill 0, $_)."; " foreach @processes;
   print "\\n";
   sleep 1;
}

2
Вам не кажутся подозрительными услуги и цены за них здесь http://www.ariel-hosting.com/hosting.php ? По запросу в яндексе "хостинг израиль" этот хостинг выскакивает на первых 4 строчках со спамом. Вы бы им доверяли?

3
Что должно быть указано в описании хостинга, означающее что на этом хостинге можно запустить мой скрипт?

Я нашел несколько пунктов которые я не понимаю:
* Поддержка DNS - Неогр.
* Списки рассылки - Неогр.
* CGI-BIN

Что имеется в виду?

4
Прежде всего меня интересует разрешают ли на сервере платного хостинга (какого-нибудь) выполнять шелл-команды и запускать скрипты на длительное время? Я написал чат в виде перл-скрипта который открывает порт, и выдает в него весь флуд пользователей. Реально ли мне найти хостинг где разрешили бы запускать такой скрипт? Какие могут возникнуть проблемы? А что если я захочу потом переписать этот скрипт на Си и скомпилирую его под FreeBSD? Полученный экзешник мне разрешат запускать?

5
Да, забыл сказать что про форки лучше читать в perlfork. Там сказано про важные моменты, про которые ничего не говорится в perlipc.

6
А я научился форкать. Написал следующее:

 
#!/usr/bin/perl -w

use strict "vars";
use 
IO::Socket;

my $server IO::Socket::INET->new
(
	
LocalPort => 9911,
	
Type => \'tcp\',
	
Reuse => 1,
	
Listen => 10
)
or die $!;

sub serve
{
	
my $client = shift;
	
my $html = "HTTP/1.0 200 OK\\nContent-type: text/html\\n\\n<HTML><BODY>200 OK</BODY></HTML>\\n";
	
print $client $html;
	
for (1..50)
	
{
	
my $mes = "<pre>$_ at ".time."</pre>\\n";
	
	
print $client $mes;
	
	
sleep 1;
	
}
}

while (my $client = $server->accept)
{
	
fork and next;
	
serve $client;
	
exit;
}

close $server; 


Но у меня теперь другая проблема. Я хочу написать "потоковый" чат, как на mpchat.com. У них сообщения добавляются в окно лога (на экран) по ходу поступления, и когда я пользуюсь ихнем чатом сообщения (любой длины) сразу появляются у меня на экране, а когда я открываю свой скрипт (см. выше) данные почему-то буферизуются Интернет Эксплорером. То есть маленькое сообщение появляется только после того как прийдет достаточное количество других маленьких сообщений (тогда они все появятся одновременно, причем последнее будет откусано в конце; откусаный хвост появится со следующей партией). Хотя сегодня я переустанавил операционную систему (поставил Win2k Pro En) и эта проблема исчезла. Но все-таки, как решить проблему у тех юзверей у которых драгая ОС (с другой версией MSIE)?

Ещё вопрос. Говорят что максимальное количество прослушиваемых клиентов ограничено десятью. То есть я так понял что больше чем Listen => 10 не сделаешь. Или я ошибаюсь? Mpchat.com обслуживает сотни клиентов; как это сделать?

И ещё один вопрос. На mpchat.com адрес скрипта выдающего сообщения имеет примерно такой вид: http://mpchat.com/amod?963c4c44358. А у меня получилось http://localhost:9911. Как мне сделать так как у них?

Страницы: [1]