i have vlc (program to reproduce videos) if i type in a shell:
/home/vlc "/home/my movies/the movie i want to see.mkv"
it opens up an reproduces the movie.
however, when I run the following program:
#include <unistd.h> int main(void) { execl("/home/vlc", "/home/my movies/the movie i want to see.mkv",NULL); return 0; } vlc opens up but doesn't reproduce anything. How can I solve this?
Things I tried:
I guessed
execl("/home/vlc", "/home/my movies/the movie i want to see.mkv",NULL); was equivalent to typing in the shell:
/home/vlc /home/my movies/the movie i want to see.mkv which doesn't work, so i tried
execl("/home/vlc", "\"/home/my movies/the movie i want to see.mkv\"",NULL); and vlc opens up but doesn't reproduce either.
Instead of writing NULL at the end I tried 0, (char*) 0, 1 .... not helpful. Help!!!!
12 Answers
execl("/home/vlc", "/home/vlc", "/home/my movies/the movie i want to see.mkv", (char*) NULL); You need to specify all arguments, included argv[0] which isn't taken from the executable.
Also make sure the final NULL gets cast to char*.
If you need just to execute your VLC playback process and only give control back to your application process when it is done and nothing more complex, then i suppose you can use just:
system("The same thing you type into console");