WindowsのCreateProcess関数を使って並列処理をしたいのは初めてです。MSDN の例に基づいて、次のようなLPTSTR
「(非定数) TCHAR 文字列」 コマンド ライン引数を作成しました。
LPTSTR szCmdline[] = _tcsdup(TEXT("\C:\\MyProgram_linux_1.1\\MyProgram.exe") );
LPTSTR およびその他のchar 型と string 型については、ここで説明します。
CreateProcess
コマンドライン引数はこのように渡されます
if (!CreateProcess(NULL, szCmdline, /*...*/) ) cout << "ERROR: cannot start CreateProcess" << endl;
そして、これらのヘッダーが存在します
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#include <strsafe.h>
#include <direct.h>
コンパイル時にこれはエラーです:
error C3861: '_tcsdup': identifier not found
このエラーを検索すると同じエラーが見つかりましたが、解決策は.NETフレームワークを使用することに固有のものであり、error C3861: '_tcsdup'
それが関連しているかどうかはわかりませんが、error C2059: syntax error : ')'
上にもありますif (!CreateProcess(NULL, szCmdline, /*...*/) ) cout << "ERROR: cannot start CreateProcess" << endl;
このエラーはどのように修正されますか? そして、これで何が起こっているのですか?
また、CreateProcess
Linux 機能を学習するための学習ステップとしてfork()
を使用しています。Visual Studio インターフェースの方が使いやすく、これがデバッグされて機能したら、g++ インターフェースに変更しfork()
、そこから変更してデバッグします。fork()
可能であれば、につながるソリューションが最も有益です。