SORU
16 Mayıs 2011, PAZARTESİ


Nasıl “scala.sys.süreci” Scala 2.9 çalışıyorsun?

Ben sadece burada scala.sys scala.sys.process eğer işe yarar bir şey olup olmadığını görmek için yeni paketleri bir göz vardı. Ancak, tam bir kayıp duyuyorum.

Herkes aslında bir süreci başlatmak için nasıl bir örnek var mı?

Ve, benim için en ilginç olan: ayırma işlemleri misin?

Müstakil bir süreci üst süreci bittiğinde çalışmaya devam eder ve Karınca zayıf noktalardan biridir.

GÜNCELLEME:

Ayırmak ne bir karışıklık var gibi görünüyor. Benim şimdiki proje gerçek canlı bir örnek var. Z-Shell ile bir kez ve bir kez TakeCommand ile:

Z-Kabuk:

if ! ztcp localhost 5554; then
    echo "[ZSH] Start emulator"
    emulator                        \
    -avd    Nexus-One               \
    -no-boot-anim                   \
    1>~/Library/Logs/${PROJECT_NAME}-${0:t:r}.out   \
    2>~/Library/Logs/${PROJECT_NAME}-${0:t:r}.err   &
    disown
else
    ztcp -c "${REPLY}"
fi;

-Komut:

IFF %@Connect[localhost 5554] lt 0 THEN
   ECHO [TCC] Start emulator
   DETACH emulator -avd Nexus-One -no-boot-anim
ENDIFF

Her iki durumda da ateşle ve unut, öykünücüsü başladı ve senaryo bittikten sonra bile çalışmaya devam eder. Elbette komut iki kez yazmak zorunda kaybıdır. Özellik listesi veya xml sözdizimi olmadan birleşik bir taşıma işlemi için Scala şimdi bakıyorum.

CEVAP
16 Mayıs 2011, PAZARTESİ


İlk alma:

import scala.sys.process.Process

sonra bir ProcessBuilder oluşturun

val pb = Process("""ipconfig.exe""")

O zaman iki seçeneğiniz vardır:

  1. ve bu süreç kadar çıkar açığı kapatın

    val exitCode = pb.!
    
  2. arka plan (müstakil) işlemini çalıştırın ve Process bir örnek olsun

    val p = pb.run
    

    Sonra işlemi exitcode Eğer süreç daha çıkar kadar bloklar çalışıyorsa () alabilirsiniz

    val exitCode = p.exitValue
    

Eğer işlemin giriş ve çıkış işlemek istiyorsanız ProcessIO kullanabilirsiniz:

import scala.sys.process.ProcessIO
val pio = new ProcessIO(_ => (),
                        stdout => scala.io.Source.fromInputStream(stdout)
                          .getLines.foreach(println),
                        _ => ())
pb.run(pio)

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Austin Evans

    Austin Evans

    5 AĞUSTOS 2007
  • Karan Thakur

    Karan Thakur

    23 HAZİRAN 2010
  • Plugable

    Plugable

    19 Mayıs 2010