Передача аргумента командной строки переменной длины в двоичный файл с помощью execv() [дубликат]Linux

Anonymous
Передача аргумента командной строки переменной длины в двоичный файл с помощью execv() [дубликат]

Сообщение Anonymous »

Я создаю двоичный файл приложения, который будет принимать данные из командной строки.
файл 1:

Код: Выделить всё

int main(int argc, char *argv[])
{
char *argv2[] = {"hello", "hello1", "hello2",...., NULL};
char *envp[] = {NULL};
execve("/usr/bin/hello", argv2, envp);

return 0;
}
файл 2

Код: Выделить всё

void hello_back()
{
printf("hello back\n");
}
void no_hello()
{
printf("no hello\n");
}
void Just_hello()
{
printf("just saying hello\n");
}

void main(int argc, char *argv[])
{
if(argc ==1)
Just_hello();
else if (strcmp(argv[1],"hello")==0)
hello_back();
else if(strcmp(argv[1],"hello1")==0)
no_hello();
else
printf("No hello has received\n");
}
Хотя main в файле 2 работает под Linux с правами root, и я не хочу, чтобы пользователь уходил, а main() в файле 1 выполняется в пространстве пользователя, где они могут передавать определенные входные данные для main в файле 2. На основе входных данных main в файле 2 будет выполнять различные функции. Функция main() в файле 1 принимает входные данные из командной строки.
Я пробовал несколько способов с помощью execl(), изменяя проверки условий, но это помогло не работает.
Я, должно быть, что-то упускаю и не могу понять.

Подробнее здесь: https://stackoverflow.com/questions/791 ... sing-execv

Вернуться в «Linux»