Cent OS + Eclipse CDT で C++ プログラミングをはじめたばかりです。
マルチプロセスのアプリを作成したいのですが、C++ での子プロセス作成や
その制御方法についてネットで探しても、C言語(の文法)でのやり方は見つかるのですが、
C++でのやりかたは見つかりませんでした。
(C言語を包含してるんだからC言語の文法でもいいじゃんとは言わないでください。。)
C++でも fork して子プロセスを作成するということのようですが、
実際のサンプルソースなどが載っているサイトや、
Linux C++ で参考になる書籍があったら教えて欲しいと思います。
よろしくおねがいします。
No.1
- 回答日時:
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++ の情報ばかりなので、こういう情報は助かります。
ありがとうございました。
No.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;
}
回答ありがとうございます。
boost ではマルチスレッド制御はあるのですがマルチプロセス制御はないようでした。
てっきり POSIX に含まれているかと思いきや、そっちにも無いみたいだし。。。
fork を使用したサンプルソース助かります!
C言語でのサンプルソースはよくあるんですが、C++に読み替える知識がまだないので困っていました。
今家ではないので、帰ったら試してみたいと思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) プログラムの勉強のおすすめは 7 2022/12/09 20:09
- 哲学 日本語は 言語類型として あたかも始原のごとくである 3 2022/05/29 04:41
- C言語・C++・C# exeファイルが作れない(windows10) 6 2022/08/13 08:47
- C言語・C++・C# C言語のエラーについて 2 2022/07/11 13:56
- C言語・C++・C# 参考にいろいろとc言語、c++言語プログラミングでレジストリーを操作したいのですが、無料配布のc++ 3 2022/12/22 01:49
- C言語・C++・C# visual studio 2019 についての質問です 1 2022/09/21 09:58
- Excel(エクセル) 別インスタンスのエクセルを制御したい 1 2023/05/10 02:03
- C言語・C++・C# プログラミング言語「C#」の難易度ってどれくらいですか? 4 2022/05/12 19:15
- その他(プログラミング・Web制作) プログラミングについて(Python) 添付した画像はC言語で簡単に作ったソースで、1つの配列に5つ 3 2022/09/10 19:15
- その他(言語学・言語) ピダハン語 2 2022/07/14 12:41
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
タスクマネージャーのプロセス...
-
バックグラウンドのプロセスの...
-
起動中の他のプログラム(orプ...
-
CreateObjectで作成したExcelの...
-
プロセスのアタッチ・デタッチ...
-
C#でのbatファイル実行結果取得
-
Windowsでのfork方法
-
ロードアベレージが高いのです...
-
explorer.exeが異様にメモリを食う
-
シェルで親プロセス終了時に子...
-
非表示になったエクセルは?
-
他のEXEが起動しているかの確認
-
警告『 別のプロセスで使用され...
-
VB6.0 SHELLで起動...
-
VBSからbat実行(WMI)して戻り値...
-
OSPFでプロセスを分ける意義に...
-
SendMessageが失敗するときがある
-
execvpでのcdコマンドについて。
-
起動中のEXCELファイル(EXCEL...
-
API関数 GetExitCodeProcess
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
バックグラウンドのプロセスの...
-
explorer.exeが異様にメモリを食う
-
タスクマネージャーのプロセス...
-
C#でのbatファイル実行結果取得
-
プロセスのアタッチ・デタッチ...
-
VB6.0 SHELLで起動...
-
プロセスIDからウィンドウハ...
-
Process.Startの戻り値を後で取得
-
ウィンドウのタイトルからプロ...
-
他のEXEが起動しているかの確認
-
ADOでアクセスのレコードに...
-
怪しいプロセス教えてください。
-
別のプロセスの関数を呼び出す...
-
C++のプログラムをバックグラウ...
-
Linuxでのスレッド間メッセージ...
-
C++でシェルを起動
-
プロセスIDの取得方法について
-
OSPFでプロセスを分ける意義に...
-
非表示になったエクセルは?
-
Windowsでのfork方法
おすすめ情報