- ベストアンサー
別のプロセスの関数を呼び出す方法はありますか?
別のプロセスの関数を呼び出す方法はありますか? WINDOWSでプロセスAとプロセスBがあり、 プロセスBの関数ポインタをプロセスAで取得するところまではできるのですが、 この後、プロセスAからプロセスBの関数をコールバックする方法はありますか? アドレス空間はプロセスごとに固有であるため、 通常のコールバックではうまくいかないと思うのですが・・・。 尚、プロセスAとプロセスBは、異なるプログラムです。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
おっしゃる通りプロセスAのアドレスはプロセスBにとって無意味な数値です。 プロセス間通信でプロセスAの関数の結果をプロセスBで受け取る方法があります。 ※プロセスAとBが改変できる事が前提 Windowsであれば、SendMessage(MsgはWM_COPYDATA)を使って別プロセスにデータを送信可能です。 関数実行の要求はプロセスB→プロセスA、 関数の結果を受け取るにはプロセスA→プロセスBにSendMessageします。
その他の回答 (2)
- gyrocompas
- ベストアンサー率23% (24/104)
参考までに WindowsおよびLinuxでは プロセスごとに仮想メモリー空間が構成されます。 従って、プロセスが異なると、仮想メモリー空間が異なるため 互いのアドレスは意味がありません。 (前回答のとおり) なんらかのプロセス間通信を使う以外に情報をやりとりをする方法 はありません。 ちなみに、プロセスとは、リソース(メモリーをふくめた)の 管理単位でもあります。 また、スレッドとは並行処理され得る最小単位のことで プロセスは複数のスレッドから構成されます。 同一プロセスのスレッド同士はリソースを共有するので スレッド同士なら、メモリーアドレスは意味を持つでしょう。
お礼
ありがとうございました。
- nak777r
- ベストアンサー率36% (49/136)
方法は有ります が、実際の作り方は、私は全く知りません。 やり方としては、OLEオートメーションサーバーとして最初から プロセスBのプログラムを設計、作成してやれば出来ると思います。 EXCEL のOLEオートメーションのアレです
お礼
回答ありがとうございました。 じっくり勉強してみます。
お礼
できればプロセスBのスレッドでプロセスAの関数をコールしたかったのですが、 やはり難しそうですね。 回答ありがとうございました。
補足
>できればプロセスBのスレッドでプロセスAの関数をコールしたかったのですが、 プロセスAとプロセスBが逆でした。すみません。