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

  • Kevin Bruckert

    Kevin Brucke

    30 Aralık 2006
  • Neil Cicierega

    Neil Ciciere

    22 Mart 2006
  • The Scary Snowman

    The Scary Sn

    1 ŞUBAT 2011