Pregunta

Ok, tengo dos programas, y uno llama a otro usando ejecutable desde otro. Lo estoy ejecutando en Ubuntu Terminal

Esta es una estructura de carpeta en su lugar

.../SRC/PGM1/PGM1 .../SRC/PGM0/PGM0

PGM1 y PGM0 son ejecutables.

Así es como llamo al otro ejecutable

char cmd[1000]; string path = "/home/usr/src/"; // call pgm0 for each instance... sprintf( cmd, "../pgm0/pgm0 xRes 400 xRes 400 inFile tmp_output/%s.%04d.sc > tmp_output/%s.%04d.ppm", g_outFile.c_str(), ti, g_outFile.c_str(), ti); cout << cmd << endl; system (cmd); ....

Miré y el CMD se genera correctamente: ../pgm0/pgm0 años 400 xres 400 infile tmp_output/sph0.0000.sc> tmp_output/sph0.0000.ppm

Entonces, si ejecuto este comando desde la línea de comando, funciona perfectamente bien.

Si lo ejecuto con el sistema, llame, colgada y no puede analizar el archivo de entrada SPH0.0000.SC, intenté agregar ruta completa (por lo tanto, la variable de ruta hacia arriba)

Pero aún no hay suerte.

Cualquier idea por qué funcionaría esto desde la línea de comandos y no desde el sistema llamar dentro de otro ejecutable ...

Solo para aclarar, funciona desde la línea de comandos en la carpeta PGM1.

Gracias

¿Fue útil?

Solución

Tu estas usando > lo que significa algo para muchos conchas, pero sospecho que no system. Prueba esto:

snprintf( cmd, sizeof cmd,
    "/usr/bin/bash -c '../pgm0/pgm0 xRes 400 xRes 400"
    " inFile tmp_output/%s.%04d.sc > tmp_output/%s.%04d.ppm'",
    g_outFile.c_str(), ti, g_outFile.c_str(), ti);

Y háganos saber cómo va eso.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top