異なるプログラミング言語間の受け渡しについて

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
pocket
記事: 49
登録日時: 9年前

異なるプログラミング言語間の受け渡しについて

#1

投稿記事 by pocket » 9年前

お世話になっております.

今回は異なるプログラミング言語間のやり取りについて質問させていただければと思います.
C++歴は1年と半分ほどです.

では具体的な説明をさせていただきます.

まず,Python,Java,C++のそれぞれで作成したプログラムがあるとします.
3個の独立したプログラムがあると言うことです.

3個のプログラムはそれぞれ独立して動いています.
まず,C++のプログラムに対して"Hello"を入力します.
C++のプログラムはPythonの動いているプログラムに対して,”Hello”を渡します.
Pythonのプログラムは”Hello”+"world"として,javaのプログラムに渡します.
javaのプログラムは"Hello World"+"!!"としたものをファイルに出力します.

上記のことを実現したいと考えています.
おそらくC++から別の言語の関数を呼ぶことはできると思います.
ですが,今回実現したいことは,すでに動作している別の言語のプログラムに対しての入力です.

このようなことを実現するためには,一般的にどのようなことをすればいいのでしょうか?
単語程度でもかまいませんので,お力を貸していただければ幸いです.

よろしくお願いいたします.

アバター
みけCAT
記事: 6734
登録日時: 14年前
住所: 千葉県
連絡を取る:

Re: 異なるプログラミング言語間の受け渡しについて

#2

投稿記事 by みけCAT » 9年前

これは「プロセス間通信」と呼ばれる処理ですね。
「パイプ」または「ソケット」を使うといいと思います。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

かずま

Re: 異なるプログラミング言語間の受け渡しについて

#3

投稿記事 by かずま » 9年前

実行環境は何ですか? Linux なら、

out.cpp

コード:

#include <iostream>

int main()
{
    char c;
    while (std::cin.get(c) && c != '\n') std::cout.put(c);
}
addWorld.py

コード:

#!/usr/bin/env python
s = raw_input();
print s, "World",
addExclamation.java

コード:

import java.io.*;

class addExclamation {
    public static void main(String[] args) throws IOException {
        int c;
        while (true) {
            c = System.in.read();
            if (c == -1 || c == '\n') break;
            System.out.write(c);
        }
        System.out.println("!!");
    }
}

コード:

$ g++ -o out out.cpp
$ chmod +x addWorld.py
$ javac addExclamation.java
$ ./out | ./addWorld.py | java addExclamation
Hello
Hello World!!
$
Windows でも似たようなもんでしょ。

pocket
記事: 49
登録日時: 9年前

Re: 異なるプログラミング言語間の受け渡しについて

#4

投稿記事 by pocket » 9年前

返信が少し遅くなってしまい申し訳ありません。

みけCATさん、かずまさん回答いただきありがとうございます。

パイプとソケットについて調べてみました。

かずまさんに回答いただいたプログラムはパイプを使用されたものだと思います。
このようなことが出来たのですね。
はじめて知りました。

今後はソケットを用いて多言語間でのやり取りが出来るプログラムを作成したいと思います。

みなさんありがとうございました。

閉鎖

“C言語何でも質問掲示板” へ戻る