2011-05-20 17 views
7

merhaba komut satırını bir haskell komutunu çalıştırdıktan sonra komutunu okutmam gerekiyor, sistem komutlarını çalıştırmak için iki modül olduğunu biliyorum: System.Cmd ve System.ProcessHaskell'de bir sistem komutundan girdi okuma

herhangi birinin nasıl çalıştırılacağını basit bir örnek gösterebilir System.Process işlevleri?

burada yapmam gereken bir örnek (bunu yapmak için System.Directory olduğunu biliyorum ama bunun iyi bir örnek olduğunu düşündüm):

  1. ls -a
  2. gibi bir sistem komutunu çalıştırıyorum Kullanıcının
  3. çıkışını görmesini istediğim çıkışlar sadece benim programımda doğrulanmalıdır.

bunu nasıl yapabilirim?

+1

Bir komutun * çıktısını * okuduğunuzu, * komut satırını * okumayı kastettiğinizi düşünüyorum. Komut satırı, yürütülmekte olan komutun adını ve argümanlarını ifade eder. –

+2

Sorunun düzenlenmesi kafa karıştırıcı. Orijinali, ** 'de ** yerine ** ** standart çıkış **' ı okumaya isteyerek yorumladım. – Anthony

cevap

18
import System.Process 
test = readProcess "ls" ["-a"] "" 

kullanım detayları için documentation bakınız etmeyin.

+0

Platform bağımsız mı olacak (tüm işletim sistemleri için çalışır)? – Tarrasch

+3

@Tarrasch "ls" komutu elbette platformdan bağımsız değil, readProcess olmalıdır. "System.Process" dokümantasyonu, Windows'un davranışının Unix tabanlı platformlardan saptığı çeşitli alanlardan bahseder. – Anthony

+0

[readProcessWithExitCode] işlevini kullanmak daha iyidir (http://stackoverflow.com/a/37108680/1100107). –