2009-11-22 49 views
0

在編寫下面的程序之後,它似乎沒有將參數傳遞給被調用的應用程序。在研究_spawnv以及它能做什麼時,_execvp被認爲是一種合適的選擇。有沒有人看到源代碼中的問題,並知道需要做什麼來解決它?如何使用_spawn或_exec進行引導?

#include <stdio.h> 
#include <stdlib.h> 
#include <process.h> 

int main(int argc, char** argv) 
{ 
    int index; 
    char** args; 
    args = (char**) malloc((argc + 1) * sizeof(char*)); 
    args[0] = "boids.py"; 
    for (index = 1; index < argc; index++) 
    { 
     args[index - 1] = argv[index]; 
    } 
    args[argc] = NULL; 
    return _execvp("python", args); 
} 

回答

2

argv向量的第一個參數是通常要啓動的可執行文件的全名:

的_spawnv,_spawnve,_spawnvp和 _spawnvpe電話是有用的,當有一個可變數量的參數 新的過程。 參數的指針作爲數組傳遞, argv。的參數的argv [0]是通常 一個指針,指向在實模式或 程序名稱在保護模式下的路徑, 和argv 1通過的argv [n]爲 指針的字符串 形成新的參數列表。 參數argv [n + 1]必須是NULL 指針,以標記 參數列表的末尾。

(來自MSDN

同樣:

的_execv,_execve,_execvp,並且當參數,在將新 過程的數目是可變 _execvpe呼叫是有用的。指向 參數的指針作爲數組傳遞, argv。參數argv [0]通常是指向cmdname的指針 。參數 argv 1到argv [n]指向形成新的 參數列表的 字符串。參數 argv [n + 1]必須爲空指針,以 標記參數列表的末尾。

MSDN