2015-07-28 20 views
5

Desidero eseguire un comando shell in Rust. In Python posso fare questo:Esecuzione di un comando shell

import os 
cmd = r'echo "test" >> ~/test.txt' 
os.system(cmd) 

Ma Rust ha solo std::process::Command. Come posso eseguire un comando di shell come cd xxx && touch abc.txt?

risposta

6

Si dovrebbe davvero evitare system. Quello che fa dipende da quale shell è in uso e da quale sistema operativo ci si trova (il tuo esempio quasi certamente non farà quello che ti aspetti da Windows).

Se davvero, un disperato bisogno per richiamare alcuni comandi con una conchiglia, si può fare marginalmente meglio, semplicemente eseguendo il guscio direttamente (come con l'interruttore -c per bash).

Se, per qualche ragione, quanto sopra non è fattibile e si può garanzia vostro programma sarà solo corsa sui sistemi in cui il guscio in questione è disponibile e utenti volontà non essere in esecuzione qualsiasi altra cosa ...

... allora si può solo utilizzare la chiamata system da libc proprio come si farebbe da regolare C. Questo conta come FFI, quindi probabilmente si vorrà guardare std::ffi::CStr.

+0

Grazie mille! –

Problemi correlati