web-dev-qa-db-fra.com

Comment appeler execl () en C avec les arguments appropriés?

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 !!!!

18
Matias Morant
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

30
AProgrammer

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");

0
Erik Kaju