2016-05-01 175 views
-4

我想使用execvp在c中創建一個文件。該文件的名稱在int1變量中。但它不起作用。使用execvp執行touch c

int int1; 
sscanf((char*) file_memory,"%d",&int1); 
char* arg_list[] = { 
     "touch", 
     "int1", 
     NULL 
     }; 
execvp ("touch",arg_list); 
+1

「它不工作」永遠不是一個足夠的問題描述。請準確描述您的程序的輸入,預期行爲和實際行爲。你可以通過檢查'execvp'是否成功開始,如果沒有,則打印'errno'。 – kaylum

回答

1

您正在創建一個字面上名爲int1的文件,因爲您編寫了字符串文字。變量不在字符串文字內擴展。你需要用整數值填充一個字符串變量。

int int1; 
sscanf((char*) file_memory,"%d",&int1); 
char name[20]; 
snprintf(name, sizeof name, "%d", int1); 
char *arg_list[] = { 
    "touch", 
    name, 
    NULL, 
}; 
execvp("touch", arg_list);