Как вызвать 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.... не полезно.
Помогите!!!!
Ответы
Ответ 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");