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

  • Jordie Jordan

    Jordie Jorda

    27 Ocak 2008
  • kalabrandmusic

    kalabrandmus

    25 Kasım 2009
  • KIT KAT

    KIT KAT

    3 EKİM 2005