# Comandi esterni | STDOUT - STDERR

**URL:** <https://www.ruby-forum.com/t/comandi-esterni-stdout-stderr/80536>\
**Category:** IT\
**Created:** [December 28, 2006, 3:17pm UTC](https://www.ruby-forum.com/t/comandi-esterni-stdout-stderr/80536 "2006-12-28T15:17:49Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![hpatoio](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/h/a9adbd/32.png) [@hpatoio](https://www.ruby-forum.com/u/hpatoio)\
**Post date:** [December 28, 2006, 3:17pm UTC](https://www.ruby-forum.com/t/comandi-esterni-stdout-stderr/80536/1 "2006-12-28T15:17:49Z")

</div>

Ciao a tutti.

Da uno script ruby ho la necessità di lanciare dei comandi esterni  
(ZIP di un elevato numero di file)

Ho provato con system, ma, mi servirebbe  
un maggior controllo su STDOUT e STDERR

Ho provato facendo loggare STDOUT e STDERR su un file  
system (“#{comando} \> #{logfile} 2\>&1”)

e andando poi a controllare il contenuto dello stesso.  
Ma la cosa mi sembra un po “macchinosa”.

Ho ora trovato open3  
([http://www.ruby-doc.org/stdlib/libdoc/open3/rdoc/index.html](http://www.ruby-doc.org/stdlib/libdoc/open3/rdoc/index.html))

che fa tutto quello che mi serve ma non vorrei che si “perda” qualcosa  
da STDOUT e/o STDERR.

Qualcuno usa open3 ? ci sono controindicazioni nell’utilizzo ?  
Avete consigli su come gestire la cosa ?

Grazie

Simone

---

<div class="post-metadata">

**Author:** ![hpatoio](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/h/a9adbd/32.png) [@hpatoio](https://www.ruby-forum.com/u/hpatoio)\
**Post date:** [December 28, 2006, 3:35pm UTC](https://www.ruby-forum.com/t/comandi-esterni-stdout-stderr/80536/2 "2006-12-28T15:35:53Z")

</div>

On 12/28/06, Simone F. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> Ciao a tutti.
> 
> Da uno script ruby ho la necessità di lanciare dei comandi esterni  
> (ZIP di un elevato numero di file)
> 
> Ho provato con system, ma, mi servirebbe  
> un maggior controllo su STDOUT e STDERR

Hal F. “The Ruby Way” consiglia di usare popen3.

In alternativa, perché non provi ad usare una libreria dentro a Ruby  
piuttosto che un comando esterno? Tipo Rubyzip  
([http://rubyzip.sourceforge.net/](http://rubyzip.sourceforge.net/))

Disclaimer: non ho provato personalmente in nessuna delle due maniere 🙂

Matteo

---

<div class="post-metadata">

**Author:** ![hpatoio](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/h/a9adbd/32.png) [@hpatoio](https://www.ruby-forum.com/u/hpatoio)\
**Post date:** [December 28, 2006, 4:10pm UTC](https://www.ruby-forum.com/t/comandi-esterni-stdout-stderr/80536/3 "2006-12-28T16:10:03Z")

</div>

Matteo V. wrote:

> Hal F. “The Ruby Way” consiglia di usare popen3.  
> OK.

> In alternativa, perché non provi ad usare una libreria dentro a Ruby  
> piuttosto che un comando esterno? Tipo Rubyzip  
> ([http://rubyzip.sourceforge.net/](http://rubyzip.sourceforge.net/))  
> Preferisco utilizzare funzioni “standard” per la creazione di ZIP, non  
> vorrei avere problemi di “compatibilità” con i file creati.

Simone

---

<div class="post-metadata">

**Author:** ![hpatoio](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/h/a9adbd/32.png) [@hpatoio](https://www.ruby-forum.com/u/hpatoio)\
**Post date:** [December 28, 2006, 4:54pm UTC](https://www.ruby-forum.com/t/comandi-esterni-stdout-stderr/80536/4 "2006-12-28T16:54:24Z")

</div>

cmd=“echo prova \> prova.txt”  
`#{cmd}`

Il 28/12/06, Simone F.[removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) ha scritto:
