質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

プログラミング言語

プログラミング言語はパソコン上で実行することができるソースコードを記述する為に扱う言語の総称です。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

4回答

15777閲覧

他言語間でのプロセス間通信について

退会済みユーザー

退会済みユーザー

総合スコア0

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

プログラミング言語

プログラミング言語はパソコン上で実行することができるソースコードを記述する為に扱う言語の総称です。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

1グッド

2クリップ

投稿2015/10/10 15:18

他言語間でのプロセス間通信について。
c++を用いて開発を行っていますが今回画像処理の部分でpythonで記述したコードを使用したいと思いました。
この時, pythonのプロセスを立ち上げておいてc++からプロセス間通信によりデータを受け渡して処理を行う, もしくはOSにsignalを送るようなプログラミングをしてしまうことはコーティングスタンダード的に許されることなのでしょうか?
C++への関数の変換も考えましたが見た感じ複雑そうだったので...

退会済みユーザー👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答4

0

C++からPythonのコードを呼び出したいのでしたら以下のリンクのようにPythonの埋め込みの方が柔軟な処理を実現できると思います。

Python2系の場合
他のアプリケーションへの Python の埋め込み
C/C++ から Python を動的に扱う

Python3系の場合
他のアプリケーションへの Python の埋め込み

ですがPython側でプロセス常駐するのでしたらこの方法は使えませんので、プロセス間通信など他の手段が必要でしょう。
この辺りはコーディングスタンダードよりも設計寄りですので、許す、許されないという話ではないと考えます。

投稿2015/10/10 16:30

shiena

総合スコア1825

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2015/10/25 15:07 編集

この方法に1票。 そもそもPythonはC言語で実装されており、言語機能の全てが動的ライブラリに格納されています。Pythonの通常の処理系は、この動的ライブラリを最も単純にラップする(うすーく包み込む)形で呼び出しているだけなんですね。 Python動的ライブラリの中の最上位関数であるPyメイン関数を呼び出せば、Pythonインタプリタ1つのみを実体化して使用するだけのプログラムが生成されます。 これを自分で呼び出せば良いだけですね。 Pythonインタプリタをnewするにはコストがかかりますが、プロセスを立ち上げる よりかは安上がりですし、プロセス間通信だとエラーケースの作りこみが面倒ですね。
guest

0

独立した機能を持ったプロセス同士であれば、言語を気にする必要は全くないと思います。
ただ、通信するデータの形式によってはその形式を苦手な言語もあるかと思うので、考慮が必要です。

投稿2015/10/10 16:24

otn

総合スコア84559

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

実行されるソフトから見た場合、プロセス間通信は単にOS(や処理系)の一機能でしかありません。
なので、もちろん
C<=>C++
C++<=>Python
のようなことも可能でしょう。

ただし、その言語自体がプロセス間通信に対応している必要はあります。

投稿2015/10/22 14:53

carbon

総合スコア31

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

プログラミング言語の違いって、どちらかと言えば プログラマー側の都合(プログラムの書きやすさ)のためにあるのであり、一度実行を開始してしまえば、コンピューター(OS)側からすれば プロセス の一つに過ぎません。(OSから見れば実行中のプログラムがどんな言語で作成されたものかは分かりません。)
ですので、言語の違いを気にする理由は何もありません。

大抵のOSは、プロセス同士が 相互通信するための仕組み として パイプ とか ソケット というものがあります。(ご参考
同一PC上で使用するならパイプの方が高速だという意見もありますが、いずれにしても、これらは プロセス間通信 のために OS側が標準で準備している仕組み なので、ごく一般的な方法として利用されています。

C系の言語はもちろんのこと、Pythonにもこれらの仕組みを利用するための方法が用意されていますので、ますは概要を調べて「何ができるか」「どのように実装すればよいか」のイメージをつかむところから始められると良いと思います。
Pythonでsubprocessを使って複数のコマンドをパイプでつなぐ
ソケットプログラミング HOWTO

ただし、ソケットプログラミングは、正しく理解して取り組まないとバグの温床になるので、プロセス常駐の必要がないのであれば shienaさんの回答にある通り、Pythonの埋め込み による連携の方が良いと思います。

投稿2015/10/11 10:17

pi-chan

総合スコア5936

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問