アプリ版:「スタンプのみでお礼する」機能のリリースについて

Cent OS + Eclipse CDT で C++ プログラミングをはじめたばかりです。

マルチプロセスのアプリを作成したいのですが、C++ での子プロセス作成や
その制御方法についてネットで探しても、C言語(の文法)でのやり方は見つかるのですが、
C++でのやりかたは見つかりませんでした。
(C言語を包含してるんだからC言語の文法でもいいじゃんとは言わないでください。。)

C++でも fork して子プロセスを作成するということのようですが、
実際のサンプルソースなどが載っているサイトや、
Linux C++ で参考になる書籍があったら教えて欲しいと思います。

よろしくおねがいします。

A 回答 (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;
}
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
boost ではマルチスレッド制御はあるのですがマルチプロセス制御はないようでした。
てっきり POSIX に含まれているかと思いきや、そっちにも無いみたいだし。。。

fork を使用したサンプルソース助かります!
C言語でのサンプルソースはよくあるんですが、C++に読み替える知識がまだないので困っていました。

今家ではないので、帰ったら試してみたいと思います。

お礼日時:2011/02/12 12:39

C++とLinuxの組み合わせで、C++固有の書き方でプロセスを扱う標準的な方法は存在しないと思います。


Qt (http://qt.nokia.com/)のようなフレームワークを使えばプロセスを扱うためのC++クラス (QProcess http://doc.qt.nokia.com/4.7/qprocess.html) もありますけど、そうでなければCでの書き方と基本的に同じでいいでしょう。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
Qt という FW は初めて知りました。
非 VC++ な C++ で GUI が作成したりできるんですね。

Qt を使用するかどうかはもう少しプロセス周りのことを調べてみて決めようと思います。
ネットでは VC++ の情報ばかりなので、こういう情報は助かります。
ありがとうございました。

お礼日時:2011/02/12 12:29

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!