- ベストアンサー
Linux C++でマルチプロセスプログラミングの方法と参考書籍
- Cent OS + Eclipse CDT でC++プログラミングをはじめたばかりですが、マルチプロセスのアプリを作成したい場合、C++での子プロセス作成や制御方法について探しても情報が少ないです。
- C++でもforkして子プロセスを作成することは可能ですが、具体的なサンプルソースや参考になる書籍が見つかりません。
- Linux C++でマルチプロセスプログラミングを学ぶための教材やサイトを教えてください。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
マルチスレッドならboostでできるのかなぁ? >(C言語を包含してるんだからC言語の文法でもいいじゃんとは言わないでください。。) 勉強でやっているなら、勉強がてら自分で実装するというのも手です。 以下、表示がくずれるので空白2文字を全角の空白にしていることに注意 #include <iostream> #include <stdlib.h> #include <sys/types.h> #include <sys/wait.h> using namespace std; class Process { public: Process(void (*func)()) { pid = fork(); if (pid == 0) { (*func)(); exit(0); } else if (pid > 0) { return; } else { throw "Fail to create child process"; } } pid_t wait(void) { return waitpid(pid, NULL, 0); } private: pid_t pid; }; void child_func() { cout << "I'm child" << endl; } int main(int argc, char *argv[]) { Process child(child_func); child.wait(); return 0; }
その他の回答 (1)
- salsberry
- ベストアンサー率69% (495/711)
C++とLinuxの組み合わせで、C++固有の書き方でプロセスを扱う標準的な方法は存在しないと思います。 Qt (http://qt.nokia.com/)のようなフレームワークを使えばプロセスを扱うためのC++クラス (QProcess http://doc.qt.nokia.com/4.7/qprocess.html) もありますけど、そうでなければCでの書き方と基本的に同じでいいでしょう。
お礼
回答ありがとうございます。 Qt という FW は初めて知りました。 非 VC++ な C++ で GUI が作成したりできるんですね。 Qt を使用するかどうかはもう少しプロセス周りのことを調べてみて決めようと思います。 ネットでは VC++ の情報ばかりなので、こういう情報は助かります。 ありがとうございました。
お礼
回答ありがとうございます。 boost ではマルチスレッド制御はあるのですがマルチプロセス制御はないようでした。 てっきり POSIX に含まれているかと思いきや、そっちにも無いみたいだし。。。 fork を使用したサンプルソース助かります! C言語でのサンプルソースはよくあるんですが、C++に読み替える知識がまだないので困っていました。 今家ではないので、帰ったら試してみたいと思います。