Regole del forum
1) Citare in modo preciso il linguaggio di programmazione usato.
2) Se possibile portare un esempio del risultato atteso.
3) Leggere attentamente le risposte ricevute.
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.
La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.
Salve,
Ricollegandomi alla discussione riguardo a come lanciare un'applicazione di terzi da un programma c++
(viewtopic.php?f=20&t=24600), volevo chiedere se qualcuno sa come recuperare l'output di questo programma. Ad esempio, il programma qui sotto
Restituisce l'elenco dei file nella directory in cui si trova, stampandolo direttamente a video. Io vorrei evitare che venga stampato a video e invece inserirlo in una stringa, su cui poi fare le dovute elaborazioni.
Un modo e' usare le pipe, e richiamare il programma esterno, con, mi pare, una spawn, con attributo P_NOWAIT.
Comunque, con la pipe, colleghi lo standard output del tuo programma all'estremita' della pipe, che poi va a leggerti con comodo, in un loop, messo magari in un thread a parte, se il tuo programma principale deve continuare a rispondere all'utente, mentre il programma che hai lanciato viene eseguito in background.
E' un argomento piuttosto complesso.
Scusa se non posso essere piu' preciso, ma l'ho usato una volta sola, qualche tempo fa.
Sell'uso delle pipe ne sono certo, della spawn invece no (la mia memoria fa un po' cilecca).
Grazie, farò delle prove in questo senso, almeno so cosa cercare in google
per il momento redirigo l'output su un file system("ls > /tmp/log_mio_prog.txt") e poi leggo il file, anche se è assurdo e una perdita di tempo usare un accesso al disco in scrittura e uno in lettura per recuperare una stringa...
wakkokid ha scritto:Grazie, farò delle prove in questo senso, almeno so cosa cercare in google
per il momento redirigo l'output su un file system("ls > /tmp/log_mio_prog.txt") e poi leggo il file, anche se è assurdo e una perdita di tempo usare un accesso al disco in scrittura e uno in lettura per recuperare una stringa...
Se l'output e' breve, con il caching odierno dei dischi, non e' affatto assurdo.
Ringrazio tutti
L'esempio di Alessio è proprio quello che mi serviva, adesso lo porto in c++, con il quale ho più familiarità e mi riesce piu comodo da gestire (sono affezionato alle "string" )