2010-12-20 34 views
2

子プロセスを作成する相対パスを渡すことは可能ですか? このコードはコンパイルされますが、相対パスを使用しているためエラーが発生します。相対パスでCreateProcessを使用

void Cminivideo3App::creerChildProcess(void) 
{ 
    STARTUPINFO si; 
    PROCESS_INFORMATION pi; 

    ZeroMemory(&si, sizeof(si)); 
    si.cb = sizeof(si); 
    ZeroMemory(&pi, sizeof(pi)); 

    // Start the child process. 
    int retvalue = CreateProcess(TEXT("\..\Debug\traitement.exe"), // No module name (use command line) 
     NULL,  // 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 
     &si,   // Pointer to STARTUPINFO structure 
     &pi   // Pointer to PROCESS_INFORMATION structure 
    ); 

    int lastError = GetLastError(); 


} 

答えて

5

カップルの事:

  1. @Oswaldが言うように、\は、現在のドライブのルートフォルダではなく、相対パスです。
  2. バックスラッシュをエスケープするのを忘れました。あなたは本当にTEXT("..\\Debug\\traitement.exe")がほしいです。
+0

何らかの理由で今日はうまくいった。私は子プロセスをあきらめていましたが、Visual Studioを使って両方のプロジェクトを開始していました。どうもありがとう! – toto

5

私の相対的なパスのようには見えません。 \は、現在のドライブのルートフォルダです。

+0

ありがとう、私はそれを知らなかった。 – toto