for($i=0;$i<1000;$i++) {
if($p=fork) {
next;
} elsif(defined($p)) {
sleep 10000;
exit;
} else {
print("$i\n");
<STDIN>;
}
}
数十個で子プロセスが生成されなくなります
メモリは十分あまってます
デスクトップヒープ領域が足りなくなったわけじゃなさそうです
どうすればメモリが足りる限り子プロセスを生成できるでしょうか?
windows xp avtive perl 5.8.7です。
No.4ベストアンサー
- 回答日時:
forkと同じではないですが、Win32::Processはどうでしょう。
以下のスクリプトは100のプロセスを起動できているみたいです。
D:\@ai\@Perl\Process>test1.pl M
3780 start...
3824 start...
3664 start...
3620 start...
1124 start...
#!Perl
use Win32::Process;
use Win32;
sub ErrorReport{
print Win32::FormatMessage( Win32::GetLastError() );
}
my $param = shift;
my @proc;
if ($param eq "M") {
for (1..100) {
my $ProcessObj;
Win32::Process::Create($ProcessObj,
"C:\\Perl\\bin\\perl.exe",
"perl test1.pl",
0,
NORMAL_PRIORITY_CLASS,
".")|| die ErrorReport();
push @proc => $ProcessObj
}
} else {
print "$$ start...\n";
sleep 60;
print "$$ end\n";
}
__END__
No.3
- 回答日時:
>具体的な解決方法はないのでしょうか?
この制約は1つのプロセスが生成出来るプロセスの上限を64にしているところからきていると思います。
もし、この64を他の値に変更する方法がない場合、以下の方法を採られてはいかがでしょうか。
1案、プロセスを生成するスクリプトをプロセスを複数立ち上げる。nプロセス立ち上げれば、n×64個生成できます。
2案、子プロセスが更に、親プロセスと同じ事(プロセスの生成)を行うようにする。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(学校・勉強) この中で間違ってある説明はありますか?詳しい方に教えていただきたいです。 A. 1つのプログラムが複 2 2023/07/14 01:15
- PHP PostgreSQLからCSV形式でエクスポートする際にカラム内の改行をとる方法 1 2023/02/22 10:05
- その他(プログラミング・Web制作) 十進BASICでの再帰についての質問です。 2 2022/11/18 09:17
- Visual Basic(VBA) VBAの繰り返し処理について教えてください。 3 2022/08/02 13:21
- Visual Basic(VBA) 順列をランダムに発生するプログラム 1 2022/11/16 12:16
- Windows 10 実装メモリとタスクマネージャーのメモリ使用量不一致について 4 2022/12/15 01:07
- Excel(エクセル) vba 「Nextに対するForが見当たりません」のエラーが発生する原因 1 2022/10/21 15:46
- Visual Basic(VBA) 数字が「0」の列を削除するため、下記のコードを実行しましたが、コンパイルエラーSubまたはFunct 3 2022/12/04 00:00
- 政治 私は文部科学省ヘ入り込んで投稿した私の建議文を彼らが私の依頼まましましょうか。? 2 2023/08/22 07:08
- Firefox(ファイヤーフォックス) firefoxが頻繁に停止する 1 2023/01/09 10:26
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
時間がかかり過ぎたプロセスを...
-
AIX6でファイルのタイムスタン...
-
LinuxにおいてのPerlのプログラ...
-
マルチスレッドとマルチプロセ...
-
Excel VBAでリンク切れをチェッ...
-
例外処理のフローチャートの記...
-
エクセルVBAでシートモジュール...
-
Excel VBA 『Call』で呼び出す...
-
【vba】フォームに書いてあ...
-
Cからシェルを起動し返り値をハ...
-
VBでグローバル変数を宣言するには
-
ArduinoのジャイロモジュールMP...
-
VBAのモジュールについて教えて...
-
perlをバージョンアップしたら...
-
VBAで別モジュールへの変数の受...
-
「デバイスは PRN を初期化でき...
-
bashのgrepで複数の検索、かつ...
-
VBSを利用して、IEのタブを自動...
-
vba userFormのSubを標準モジュ...
-
クラスの関数へユーザー定義型...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ハマったので助けて~。Apache...
-
AIX6でファイルのタイムスタン...
-
Active Directoryでグループに...
-
実行中のcpan processを終了さ...
-
open MAILでの"|"
-
時間がかかり過ぎたプロセスを...
-
Perl はOSによって動作が違った...
-
ディスク容量について
-
MS-DOSでperl実行時にコマンド...
-
system から得た情報を変数に入...
-
LinuxにおいてのPerlのプログラ...
-
HELOコマンドが失敗する。
-
Excel VBAでリンク切れをチェッ...
-
Excel VBA 定義されたプロージ...
-
例外処理のフローチャートの記...
-
ArduinoのジャイロモジュールMP...
-
ユーザー定義関数に#NAME?が返...
-
「デバイスは PRN を初期化でき...
-
VBAで別モジュールへの変数の受...
-
Excel VBA 『Call』で呼び出す...
おすすめ情報