Foros del Web » Programación para mayores de 30 ;) » C/C++ »

[SOLUCIONADO] Problema con la funcion system()

Estas en el tema de Problema con la funcion system() en el foro de C/C++ en Foros del Web. Buenas veréis, tengo crear un programa el cual a traves de la función system ejecute un programa, el problema es que no puedo pasarle el ...
  #1 (permalink)  
Antiguo 09/11/2014, 15:29
 
Fecha de Ingreso: noviembre-2014
Mensajes: 2
Antigüedad: 9 años, 6 meses
Puntos: 0
Pregunta Problema con la funcion system()

Buenas veréis, tengo crear un programa el cual a traves de la función system ejecute un programa, el problema es que no puedo pasarle el comando y las variables de los nombres de los archivos a la función.

Estuve mirando por varios sitios en uno decían que con sprintf creara una variable con el comando y las variables y ya le pasase esa variable al system. El programa compila pero aun así me sigue fallando en esa parte, aquí les dejo el codigo:

Código C:
Ver original
  1. #include <stdlib.h>
  2. #include <stdio.h>
  3. struct nombre{
  4.  
  5.     char *orig;
  6.     char *nuevo;
  7.  
  8. };typedef struct nombre nombre;
  9.  
  10.  void convertir(nombre cadena);
  11. int main()
  12. {
  13. nombre cadena;
  14. cadena.orig="Hilos_POSIX.mp4";
  15. cadena.nuevo="Hilos_POSIX.mp3";
  16. convertir(cadena);
  17. }
  18.  
  19. void convertir(nombre cadena)
  20. {
  21.  
  22.     char convert[100];
  23.     sprintf(convert,"ffmpeg -i %s -f mp3 -ab 192000 -ar 48000 -vn %s",cadena.orig,cadena.nuevo);
  24.   system("convert");
  25.    
  26. }

Si ayudarme como solucionar eso se lo agradeceria

Saludos dayel
  #2 (permalink)  
Antiguo 09/11/2014, 16:08
lareto
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Problema con la funcion system()

Yo creo que no hay que usar system(), nunca.

Lo habitual para ejecutar un nuevo proceso, en el mundo Windows, es usar alguna de las funciones específicas, como CreateProcess() o ShellExecute() (hay algunas más, aunque bastante anticuadas. De las dos, CreateProcess() es la más usual).

Y en el mundo Posix: fork() con Exec().

Una propuesta "portable" es Boost.Process (http://www.highscore.de/boost/process/).

:L areto :)
  #3 (permalink)  
Antiguo 10/11/2014, 02:15
 
Fecha de Ingreso: junio-2010
Ubicación: Madrid
Mensajes: 620
Antigüedad: 13 años, 11 meses
Puntos: 73
Respuesta: Problema con la funcion system()

El error lo tienes en la llamada a system. Has puesto

system ("convert");

con lo que en realidad estás intentando ejecutar el comando 'convert' (que no es lo que buscas).

La llamada correcta sería

system (convert);

dado que es en la cadena de caracteres 'convert' donde has montado el comando completo con sus parámetros.

Saludos,
  #4 (permalink)  
Antiguo 10/11/2014, 10:08
 
Fecha de Ingreso: noviembre-2014
Mensajes: 2
Antigüedad: 9 años, 6 meses
Puntos: 0
Respuesta: Problema con la funcion system()

cierto al final era una tontería... xD muchas gracias a ambos.

Etiquetas: system
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 20:17.