#!/usr/bin/perl use strict; use POPFile::Mutex; my $kakasi_mutex = new POPFile::Mutex( 'mailparse_kakasi' ); for (1..3) { my $pid = fork(); if ($pid != 0) { next; } else { for (1..1000) { kakasi_test(); } last; } } sub kakasi_test { my $line = "POPFile はベイズ推定を利用して電子メールを自動的に分類する " . "POP3 プロキシー、および Web インターフェースで、強力なスパムフィルター" . "としても威力を発揮します。ほとんどどのプラットフォームでも、どのメール" . "クライアントとも動作します。 "; use Text::Kakasi; $kakasi_mutex->acquire(); log_("Text::Kakasi start."); Text::Kakasi::getopt_argv("kakasi", "-w -ieuc -oeuc"); $line = Text::Kakasi::do_kakasi($line); Text::Kakasi::close_kanwadict(); $kakasi_mutex->release(); log_("Text::Kakasi done."); } sub log_ { my ($msg) = $_; print STDERR "$$: $msg\n"; } |
#!/usr/bin/perl |
echo %ERRORLEVEL%
#!/usr/bin/perl use strict; use POPFile::Mutex; my $kakasi_mutex = new POPFile::Mutex( 'mailparse_kakasi' ); for (1..3) { my $pid = fork(); if ($pid != 0) { next; } else { for (1..1000) { kakasi_test(); } last; } } sub kakasi_test { my $line = "POPFile はベイズ推定を利用して電子メールを自動的に分類する " . "POP3 プロキシー、および Web インターフェースで、強力なスパムフィルター" . "としても威力を発揮します。ほとんどどのプラットフォームでも、どのメール" . "クライアントとも動作します。 "; use Text::Kakasi; $kakasi_mutex->acquire(); log_("Text::Kakasi start."); Text::Kakasi::getopt_argv("kakasi", "-w -ieuc -oeuc"); $line = Text::Kakasi::do_kakasi($line); Text::Kakasi::close_kanwadict(); $kakasi_mutex->release(); log_("Text::Kakasi done."); } sub log_ { my ($msg) = $_; print STDERR "$$: $msg\n"; }
The code will output a log. Here is a example:
-1252:Text::Kakasi start. -1252:Text::Kakasi done. -1252:Text::Kakasi start. -1252:Text::Kakasi done. -1252:Text::Kakasi start. -748:Text::Kakasi start. -748:Text::Kakasi done.
The log shows that Text::Kakasi of the process -748 started before the process -1252 had done. Then, perl.exe crashed.