use strict;
Antonin 'Tonino' Kmoch
xkmoch na aisa.fi.muni.cz
Středa Září 25 13:12:40 MEST 2002
Dobry den,
me se take nechoval fork v ActiveState-u "korektne" - navic me
velice zaskocila zaporna cisla procesu. Pokud vite, ze program bude behat
na platforme Win, doporucuji pouzivat thready (jsou soucasti
distribuce). Jinak si nainstalujte Linux, take jsem to musel udelat.
hezky den
A.Kmoch
On Mon, 23 Sep 2002, rootmj wrote:
> Jak jednoduse zkusit zda dane ftpecka pro kombinaci
> jmeno_uzivatele/heslo_uzivatele jsou online? Zkousel jsem neco takoveho
> (viz kod nize), ale ve win2000 'program provede neplatnou operaci' nekdy
> po 'waiting ended'. Uz si nevim rady, dekuji.
>
> use strict;
> use warnings;
> use locale;
>
> my $addr;
> my $file_name = 'vys.txt';
> if (-e $file_name) { unlink($file_name); }
>
> my $num = 0;
> my @pids;
> my $pid;
>
> foreach my $cislo1 (96..111) {
> foreach my $cislo2 (0..255) {
> $addr = "147.229.$cislo1.$cislo2";
> $num++;
>
> $pid = undef;
> while (not defined $pid) {
> $pid = fork();
> if (not defined $pid) {
> print STDERR "Fork not work\n";
> sleep(10);
> }
> }
>
> #parent
> if ($pid != 0) {
> push (@pids, $pid);
> print "push pid $pid to active process list\n";
> if ( ($num % 1000) == 0 ) {
> if (scalar(@pids) > 0) {
> print "--- waiting for running childs\n";
> use POSIX ":sys_wait_h";
> my $kid;
> my $spid;
> while ($spid = shift @pids) {
> do {
> $kid = waitpid($spid, &WNOHANG);
> } until $kid == -1;
> }
> print "--- waiting ended\n";
> } else {
> print "--- waiting for running childs not needed\n";
> }
> }
>
> #child
> } else {
> print " start pid: $$ - $num - $addr\n";
> #@addrs = undef;
>
> use Net::FTP;
> if (my $ftp = Net::FTP->new("$addr", "Debug => 0, Timeout=30000")) {
> $ftp->login("uziv",'heslo');
> $ftp->quit;
> print "Active: $addr\n";
> open(OUT, ">> $file_name")
> || die("Error: File '$file_name' not open for add.\n");
> print OUT "$addr\n";
> close OUT;
> } else {
> print "Not active: $addr\n";
> }
> print " end $addr\n";
> die;
> }
> }
> }
>
> exit;
>
>
>
Další informace o konferenci Perl