Domanda

Ok ho due programmi, e si chiama un altro utilizzando eseguibile da un altro. Sono in esecuzione sul terminale di Ubuntu

Questa è la struttura delle cartelle in un luogo

... / src / PGM1 / PGM1 ... / src / pgm0 / pgm0

PGM1 e pgm0 sono eseguibili.

Questo è come io chiamo l'altro eseguibile

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

ho guardato oltre e il CMD è generato correttamente: ../pgm0/pgm0 yres 400 xres 400 INFILE tmp_output / sph0.0000.sc> tmp_output / sph0.0000.ppm

Quindi, se corro questo comando dalla riga di comando funziona perfettamente.

Se l'eseguo utilizzando il sistema di chiamata si blocca e non riesce a analizzare il file di input sph0.0000.sc Ho provato ad aggiungere il percorso completo (quindi variabile percorso fino)

Ma ancora nessuna fortuna.

Tutte le idee perché sarebbe questo lavoro da riga di comando e non dalla chiamata di sistema all'interno di un altro eseguibile ...

Giusto per far capire che funziona da linea di comando in PGM1 cartella.

Grazie

È stato utile?

Soluzione

Si utilizza > che significa qualcosa per molte conchiglie, ma ho il sospetto di non system. Prova questo:

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 fateci sapere come va.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top