2016-05-01 143 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);