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で質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# C言語プログラム変更 2 2022/12/21 15:03
- Excel(エクセル) Indirect関数について、Formulatextで抽出した数式を参照したい。 1 2022/12/15 11:16
- その他(学校・勉強) この中で間違ってある説明はありますか?詳しい方に教えていただきたいです。 A. 1つのプログラムが複 2 2023/07/14 01:15
- C言語・C++・C# スタックフレームの消滅 6 2023/05/20 12:33
- JavaScript カラーミーショップのsectionループ内で、[引数][戻り値]ありの関数的な処理を行いたいです。 1 2022/05/07 19:39
- Visual Basic(VBA) vba Sleep関数について教えてください 1 2023/01/18 10:18
- ドライブ・ストレージ HDDの代替処理保留中のセクタ数と回復不能セクタ数について 7 2023/06/06 13:15
- 日本株 SBI証券HYPER SBI 2のエラー 1 2023/01/31 13:38
- ノートパソコン .dllファイルがありませんと表示される 5 2023/04/30 03:03
- C言語・C++・C# カードシャッフルのブログラムを使ってc言語でブラックジャックをしたい 2 2022/04/12 15:13
このQ&Aを見た人はこんなQ&Aも見ています
-
性格の違いは生まれた順番で決まる?長男長女・中間子・末っ子・一人っ子の性格の傾向
同じ環境で生まれ育っても、生まれ順で性格は違うものなのだろうか。家庭教育研究家の田宮由美さんに教えてもらった。
-
<unistd.h>をVisualStudioでつかえるようにする
C言語・C++・C#
-
Windows上で、シグナル(SIGTERM )を送信したい(C、C++)
C言語・C++・C#
-
system関数がうまくいかない
C言語・C++・C#
-
-
4
C言語 fork()について
C言語・C++・C#
-
5
#include <Windows.h>というヘッダファイルについて
C言語・C++・C#
-
6
別のプロセスの関数を呼び出す方法はありますか?
C言語・C++・C#
-
7
win10で、正確な待ち時間の作り方
C言語・C++・C#
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
バックグラウンドのプロセスの...
-
explorer.exeが異様にメモリを食う
-
タスクマネージャーのプロセス...
-
プロセスIDからウィンドウハ...
-
ShellExecuteExでハンドルの取得
-
別のプロセスの関数を呼び出す...
-
プロセスが実行中かどうか調べ...
-
Windowsでのfork方法
-
C#でのbatファイル実行結果取得
-
VC++6.0 「プロセスへ...
-
ロードアベレージが高いのです...
-
プロセスのアタッチ・デタッチ...
-
AppActivate関数について
-
非表示になったエクセルは?
-
他のEXEが起動しているかの確認
-
c言語でプロセスIDを調べたい
-
別プロセスをの実行パスを取得...
-
CreateObjectで作成したExcelの...
-
子プロセスのデバッグ方法について
-
警告『 別のプロセスで使用され...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
バックグラウンドのプロセスの...
-
explorer.exeが異様にメモリを食う
-
タスクマネージャーのプロセス...
-
C#でのbatファイル実行結果取得
-
プロセスのアタッチ・デタッチ...
-
VB6.0 SHELLで起動...
-
プロセスIDからウィンドウハ...
-
Process.Startの戻り値を後で取得
-
ウィンドウのタイトルからプロ...
-
他のEXEが起動しているかの確認
-
ADOでアクセスのレコードに...
-
怪しいプロセス教えてください。
-
別のプロセスの関数を呼び出す...
-
C++のプログラムをバックグラウ...
-
Linuxでのスレッド間メッセージ...
-
C++でシェルを起動
-
プロセスIDの取得方法について
-
OSPFでプロセスを分ける意義に...
-
非表示になったエクセルは?
-
Windowsでのfork方法
おすすめ情報