Pergunta

Ok, eu tenho dois programas e um chama o outro usando executável de outro. Estou executando no terminal Ubuntu

Esta é a estrutura da pasta no lugar

.../src/pgm1/pgm1 .../src/pgm0/pgm0

PGM1 e PGM0 são executáveis.

É assim que eu chamo de outro executável

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

Eu olhei e o CMD é gerado corretamente: ../pgm0/pgm0 yres 400 xres 400 infil

Portanto, se eu executar este comando da linha de comando, ele funcionará perfeitamente bem.

Se eu executá -lo usando o sistema chamado pendura e falhar em analisar o arquivo de entrada SPH0.0000.SC, tentei adicionar caminho completo (daí o caminho variável para cima)

Mas ainda não há sorte.

Qualquer idéia por que isso funcionaria na linha de comando e não da chamada do sistema dentro de outro executável ...

Apenas para deixar claro que funciona da linha de comando na pasta PGM1.

Obrigado

Foi útil?

Solução

Você está usando > o que significa algo para muitas conchas, mas suspeito não system. Experimente isso:

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

E deixe -nos saber como isso vai.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top