SORU
8 Mayıs 2011, Pazar


Nasıl boru çalışma Zamanı ile iş yapmak için.() exec?

Aşağıdaki kodu göz önünde bulundurun:

String commandf = "ls /etc | grep release";

try {

    // Execute the command and wait for it to complete
    Process child = Runtime.getRuntime().exec(commandf);
    child.waitFor();

    // Print the first 16 bytes of its output
    InputStream i = child.getInputStream();
    byte[] b = new byte[16];
    i.read(b, 0, b.length); 
    System.out.println(new String(b));

} catch (IOException e) {
    e.printStackTrace();
    System.exit(-1);
}

Programın çıktısı:

/etc:
adduser.co

Kabuğundan çalıştırdığımda, tabii ki, beklendiği gibi çalışır:

poundifdef@parker:~/rabbit_test$ ls /etc | grep release
lsb-release

Bu İnternet'te, boru davranış çapraz platform değil gerçeği nedeniyle, Java fabrika üreten Java ile çalışan parlak beyinlerinden boru iş garantisini veremem söyle.

Bunu nasıl yapabilirim?

Ben yapmıyor hepsi benim ayrıştırma kullanarak Java yapıları yerine grep sed, çünkü eğer değiştirmek istiyorum dili olacağım mecburen yeniden yazmak benim ayrıştırma kodu olan dil, inanılmaz bir no-go.

Nasıl kabuk komutlarını çağırırken Java boru ve yönlendirme yaptırabilir miyim?

CEVAP
8 Mayıs 2011, Pazar


Bir senaryo yazmak, ve ayrı komutlar yerine çalıştırabiliriz.

Boru kabuk parçası da böyle bir şey yapabilirsiniz:

String[] cmd = {
"/bin/sh",
"-c",
"ls /etc | grep release"
};

Process p = Runtime.getRuntime().exec(cmd);

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • ASUS

    ASUS

    22 EKİM 2005
  • Gali B

    Gali B

    1 EYLÜL 2006
  • UlyssesForever's channel

    UlyssesForev

    28 ŞUBAT 2012