j'ai vlc (programme pour reproduire des vidéos) si je tape dans un shell:
/ home/vlc "/ home/mes films/le film que je veux voir.mkv"
il ouvre une reproduit le film.
cependant, lorsque je lance le programme suivant:
#include <unistd.h>
int main(void) {
execl("/home/vlc", "/home/my movies/the movie i want to see.mkv",NULL);
return 0;
}
vlc s'ouvre mais ne reproduit rien. Comment puis-je résoudre ça?
Choses que j'ai essayées:
J'ai deviné
execl("/home/vlc", "/home/my movies/the movie i want to see.mkv",NULL);
était équivalent à taper dans le shell:
/home/vlc /home/my movies/the movie i want to see.mkv
qui ne fonctionne pas, alors j'ai essayé
execl("/home/vlc", "\"/home/my movies/the movie i want to see.mkv\"",NULL);
et vlc s'ouvre mais ne se reproduit pas non plus.
Au lieu d'écrire NULL à la fin, j'ai essayé 0, (char *) 0, 1 .... pas utile . Aide !!!!
execl("/home/vlc",
"/home/vlc", "/home/my movies/the movie i want to see.mkv",
(char*) NULL);
Vous devez spécifier tous les arguments, inclus argv[0]
, qui ne sont pas extraits de l'exécutable.
Assurez-vous également que la dernière variable NULL
est convertie en char*
.
Les détails sont ici: http://pubs.opengroup.org/onlinepubs/9699919799/functions/exec.html
Si vous avez juste besoin d'exécuter votre processus de lecture VLC et de ne donner le contrôle à votre processus d'application qu'à la fin, rien de plus complexe, alors je suppose que vous pouvez utiliser simplement:
system("The same thing you type into console");