¿Cómo llamar a execl() en C con los argumentos apropiados?
external quotes (2)
Tengo vlc (programa para reproducir videos) si escribo en un shell:
/ home / vlc "/ home / my movies / la película que quiero ver.mkv"
Se abre y reproduce la película.
Sin embargo, cuando ejecuto el siguiente programa:
#include <unistd.h>
int main(void) {
execl("/home/vlc", "/home/my movies/the movie i want to see.mkv",NULL);
return 0;
}
vlc se abre pero no reproduce nada. ¿Como puedo resolver esto?
Cosas que probé
adivine
execl("/home/vlc", "/home/my movies/the movie i want to see.mkv",NULL);
era equivalente a escribir en el shell:
/home/vlc /home/my movies/the movie i want to see.mkv
que no funciona, así que lo intenté
execl("/home/vlc", "/"/home/my movies/the movie i want to see.mkv/"",NULL);
y vlc se abre pero tampoco se reproduce.
En lugar de escribir NULL al final, intenté 0, (char *) 0, 1 ... no es útil. ¡¡¡¡Ayuda!!!!
Si solo necesita ejecutar el proceso de reproducción de VLC y devolverle el control al proceso de la aplicación cuando se haya realizado y no haya nada más complejo, supongo que puede usar solo:
system("The same thing you type into console");
execl("/home/vlc",
"/home/vlc", "/home/my movies/the movie i want to see.mkv",
(char*) NULL);
Debe especificar todos los argumentos, incluido argv[0]
que no se toma del ejecutable.
También asegúrese de que el NULL
final se convierta en char*
.
Los detalles están aquí: http://pubs.opengroup.org/onlinepubs/9699919799/functions/exec.html