Cent OS + Eclipse CDT で C++ プログラミングをはじめたばかりです。
マルチプロセスのアプリを作成したいのですが、C++ での子プロセス作成や
その制御方法についてネットで探しても、C言語(の文法)でのやり方は見つかるのですが、
C++でのやりかたは見つかりませんでした。
(C言語を包含してるんだからC言語の文法でもいいじゃんとは言わないでください。。)
C++でも fork して子プロセスを作成するということのようですが、
実際のサンプルソースなどが載っているサイトや、
Linux C++ で参考になる書籍があったら教えて欲しいと思います。
よろしくおねがいします。
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++に読み替える知識がまだないので困っていました。
今家ではないので、帰ったら試してみたいと思います。
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++ の情報ばかりなので、こういう情報は助かります。
ありがとうございました。
お探しの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ランキング
-
バックグラウンドのプロセスの...
-
Visual C++からpingを実行して...
-
explorer.exeが異様にメモリを食う
-
ウィンドウのタイトルからプロ...
-
API関数 GetExitCodeProcess
-
プロセスIDからウィンドウハ...
-
WINのタスクマネージャの強制終了
-
タスクマネージャーのプロセス...
-
Linuxでのスレッド間メッセージ...
-
EXE間でデータを受け渡し時のka...
-
C++のプログラムをバックグラウ...
-
完全な乱数を生成する方法
-
WebBrowserでPDF表示でのトラブル
-
VB.NET 自プログラムのプロセス...
-
Windowsでのfork方法
-
ADOでアクセスのレコードに...
-
sleep関数の精度について
-
別のプロセスの関数を呼び出す...
-
VBでエクセルを起動し、プロ...
-
C#でのbatファイル実行結果取得
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
バックグラウンドのプロセスの...
-
explorer.exeが異様にメモリを食う
-
なぜ女性は男性が忘れたことを...
-
タスクマネージャーのプロセス...
-
プロセスのアタッチ・デタッチ...
-
非表示になったエクセルは?
-
Process.Startの戻り値を後で取得
-
C#でのbatファイル実行結果取得
-
プロセスIDからウィンドウハ...
-
c言語でプロセスIDを調べたい
-
Linuxでのスレッド間メッセージ...
-
プロセスIDの取得方法について
-
ADOでアクセスのレコードに...
-
怪しいプロセス教えてください。
-
vb.netでEXCEL起動がうまくでき...
-
別のプロセスの関数を呼び出す...
-
C++のプログラムをバックグラウ...
-
Visual C++からpingを実行して...
-
VBS(WSH)で開いたIEのウィンド...
-
IISがフリーズ
おすすめ情報