2016-05-01 2 views
-4

Я хочу создать файл в c с помощью execvp. имя этого файла находится в переменной int1. но это не сработает.Выполнение прикосновения с execvp в 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); 
Смежные вопросы