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

  • alex maybury

    alex maybury

    20 Aralık 2007
  • Bucky Roberts

    Bucky Robert

    9 HAZİRAN 2011
  • Vicious Computers

    Vicious Comp

    14 EKİM 2006