
Windowsプログラムで、UNIXライクなマルチプロセス処理を書きたいのですが、
fork()が使えないようで、代替の方法がわかりません。
CreateProcess()というAPIはありますが、これは単に実行モジュールの呼び出し
を行う関数で、UNIXのようなfork()でプロセスを分けるものでは
ないようです。
子プロセス内部で、構築済みのDLLを複数ロードしたいのですが、
そのDLLはマルチスレッド対応になっていないため、
マルチスレッド処理はできません。
具体的にやりたいと思っていることをプログラム的に書くと、
およそ以下のような処理です。(UNIXでよくやる手法です)
-----
実行処理のメイン()
{
int p_pid[128];
for(int i=0; i<10; i++) {
switch(pid[i]=fork()){
case 0: // 子プロセスとしての処理
子プロセスが呼び出す関数();
exit(0);
case -1:
break;
default:
break;
}
}
}
void 子プロセスが呼び出す関数()
{
LoadLiblary() と GetProcAddress() で、DLLを動的にロードし、
DLL内のAPIを呼び出す。
DLLがマルチスレッド対応でなくても、この関数は各々が別プロセスとして
複数同時実行されるので、問題なく処理できるはず。
}
-----
この処理は、Windowsでは無理なのでしょうか?
もしできるなら、Windowsで用意されているランタイムライブラリかAPIを
教えていただけないでしょうか?
よろしくお願いします。
No.2
- 回答日時:
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBAで別プロセスのExcelのフル...
-
VB6.0 SHELLで起動...
-
ADOでアクセスのレコードに...
-
フレームワークとプロセスの違...
-
起動中の他のプログラム(orプ...
-
C言語のプログラムにて二つの処...
-
Windows7アプリケーションのプ...
-
プロセス終了の検知について
-
非表示になったエクセルは?
-
C#でのbatファイル実行結果取得
-
Linuxでのスレッド間メッセージ...
-
タスクマネージャーのプロセス...
-
バックグラウンドのプロセスの...
-
起動中のプロセスのメモリを書...
-
iPodの取り外しの際のエラーメ...
-
services.exeが延々と。
-
Windowsで環境変数を設定できま...
-
WINのタスクマネージャの強制終了
-
バッチファイルでPINGログ取得
-
常駐するアプリケーションを初...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
バックグラウンドのプロセスの...
-
プロセスのアタッチ・デタッチ...
-
非表示になったエクセルは?
-
C#でのbatファイル実行結果取得
-
Process.Startの戻り値を後で取得
-
タスクマネージャーのプロセス...
-
SendMessageが失敗するときがある
-
VB6.0 SHELLで起動...
-
Linuxでのスレッド間メッセージ...
-
vb.netでEXCEL起動がうまくでき...
-
explorer.exeが異様にメモリを食う
-
プロセスIDの取得方法について
-
IISがフリーズ
-
jdbcのプロセスの処理について
-
c言語でプロセスIDを調べたい
-
セマフォとmutexの違いは?
-
警告『 別のプロセスで使用され...
-
ADOでアクセスのレコードに...
-
OSPFでプロセスを分ける意義に...
-
Windowsでのfork方法
おすすめ情報