Выполнение ls в другом каталоге в C с использованием exec - PullRequest
0 голосов
/ 06 апреля 2020

Название довольно понятно, что я хочу сделать.

Моя текущая попытка:

  chdir("/Path/I/want/");   //this is different that the path my program is located at
      char * ls_args[] = { "ls" , "ls -l", NULL};
      execv(ls_args[0], ls_args);
    }

Я не получаю никаких ошибок или выводов, любая помощь?

1 Ответ

1 голос
/ 06 апреля 2020

Для функции Execv необходим полный путь к команде, которую вы должны выполнить. Таким образом, вместо указания "ls" вы должны узнать, где находится ls в вашей системе:

$ which ls

, вероятно, он будет находиться в папке / bin. Так что вы должны дать "/bin/ls" exe c. Также любой аргумент ls должен быть другим членом массива. Поэтому вместо использования

char * ls_args[] = { "ls" , "ls -l", NULL};

используйте

char * ls_args[] = { "/bin/ls" , "-l", NULL};

...