Как вызвать execl() в C с соответствующими аргументами? - программирование
Подтвердить что ты не робот

Как вызвать execl() в C с соответствующими аргументами?

У меня есть vlc (программа для воспроизведения видео) если я нахожу оболочку:

/home/vlc "/home/мои фильмы/фильм, который я хочу увидеть .mkv"

он открывает воспроизведение фильма.

однако, когда я запускаю следующую программу:

#include <unistd.h>

int main(void) {

  execl("/home/vlc", "/home/my movies/the movie i want to see.mkv",NULL);

  return 0;
}

vlc открывается, но ничего не воспроизводит. Как я могу это решить?

Вещи, которые я пробовал:

Я догадался

execl("/home/vlc", "/home/my movies/the movie i want to see.mkv",NULL);

был эквивалентен набору в оболочке:

/home/vlc /home/my movies/the movie i want to see.mkv

который не работает, поэтому я попробовал

 execl("/home/vlc", "\"/home/my movies/the movie i want to see.mkv\"",NULL);

и vlc открывается, но не воспроизводится.

Вместо того, чтобы писать NULL в конце, я попробовал 0, (char *) 0, 1.... не полезно. Помогите!!!!

4b9b3361

Ответ 1

execl("/home/vlc", 
  "/home/vlc", "/home/my movies/the movie i want to see.mkv", 
  (char*) NULL);

Вам нужно указать все аргументы, включенные argv[0], которые не были взяты из исполняемого файла.

Также убедитесь, что окончательный NULL получает значение char*.

Подробности здесь: http://pubs.opengroup.org/onlinepubs/9699919799/functions/exec.html

Ответ 2

Если вам нужно просто выполнить ваш процесс воспроизведения VLC и только вернуть управление вашему приложению, когда это будет сделано, и ничего более сложного, то я полагаю, вы можете использовать только:

system("The same thing you type into console");