以下を使用して、C で 3 つの子プロセスを作成しています。
typedef struct{
STARTUPINFO si;
PROCESS_INFORMATION pi;
}PROCESS_PARAMS;
PROCESS_PARAMS pChildren[3];
wchar_t *szCmdline[3] = {L"nmtest -s \"TS\" -r \"Test DMR\" -tLD -d \" /child1/tclient\"",
L"nmtest -s \"TS\" -r \"Test DMR\" -tLD -d \" /child2/tclient\"",
L"nmtest -s \"TS\" -r \"Test DMR\" -tLD -d \" /child3/tclient\""};
for (i=0; i<3; i++)
{
pChildren[i].si.cb = sizeof(pChildren[i].si);
GetStartupInfo(&pChildren[i].si);
ZeroMemory(&pChildren[i].pi, sizeof(pChildren[i].pi));
// Start the child processes.
CreateProcess(NULL, // No module name (use command line)
szCmdline[i], // Command line
NULL, // Process handle not inheritable
NULL, // Thread handle not inheritable
FALSE, // Set handle inheritance to FALSE
0, // No creation flags
NULL, // Use parent's environment block
NULL, // Use parent's starting directory
&pChildren[i].si, // Pointer to STARTUPINFO structure
&pChildren[i].pi); // Pointer to PROCESS_INFORMATION structure
}
しかし、新しいプロセスの作成中にコードがクラッシュし、コマンドライン引数に何か問題があると思われます。しかし、何が悪いのかわかりません。誰かがこれで私を助けてくれますか? ありがとう。
PS:次の方法でそれを与えると、1つのインスタンスで機能します:
wchar_t szCmdline[] = L"nmctest -s \"TwonkyServer[julka]\" -r \"NMC Test DMR [julka960]\" -tLDMR -d \" /child1/twonkyclient\"";
そして、私は:
CreateProcess(NULL, // No module name (use command line)
szCmdline, // Command line
NULL, // Process handle not inheritable
NULL, // Thread handle not inheritable
FALSE, // Set handle inheritance to FALSE
0, // No creation flags
NULL, // Use parent's environment block
NULL, // Use parent's starting directory
&pChildren[i].si, // Pointer to STARTUPINFO structure
&pChildren[i].pi);
szCmdline[i] の代わりに szCmdline を与えることに注意してください。それは機能しますが、最上位のコードでいつ問題が発生するのかわかりません。