2012-02-02 10 views
0

私はProgram2と同じパラメータでProgram2からProgram1を呼び出したいと思う。 Linuxでは、私はこのようにそれを行うことができます:WindowsでWindowsの特定のパラメータを持つ外部プログラムを実行するc/C++コード

int main(char argc, char* argv[]){ 
execv("./Program1", argv); 
} 

が、私は

CreateProcessを試みたが、最初のポストとしての潜在的な問題があると言う:「ARGV [0]のモジュールが含まれていません期待どおりの名前 "。私は適切なargv [0]をProgram1に送りたいと思う。私は何をすべきか?

+0

を、それはです['_execv']と呼ばれます(http://msdn.microsoft.com/en-us/library/886kc0as.aspx)。 –

答えて

1

argv [0]はプログラム自体の名前です。

あなたがすべき

int main(char argc, char **argv) 
{ 
    char* argvForProgram1[] = { "./Program1", 0 } 
    execv(argvForProgram1[0], argvForProgram1); 
} 

したり、以前の引数を保つために:

int main(char argc, char **argv) 
{ 
    char** argvForProgram1 = argv; 
    argvForProgram1[0] = "./Program1"; 
    execv(argvForProgram1[0], argvForProgram1); 
} 

execveを使用すると、あなたは環境に保つためにあまりにも良いです:Windowsでは

int main(char argc, char **argv, char **envp) 
{ 
    char** argvForProgram1 = argv; 
    argvForProgram1[0] = "./Program1"; 
    execve(argvForProgram1[0], argvForProgram1, envp); 
} 
+0

私の悪いです。私はexecvがLinux固有の機能だと思ったが、それはPOSIXだ。 – ov7a