Bu, this question numaralı izindir. Cevap, err Süreci dışarı kopyalamakİşlemin girdi/çıktı akışlarını Sistemdeki meslektaşlarına nasıl kopyalarım?
de öne sürdü ve giriş aşağıdaki gibi (çeşitli derleme hataları düzeltmeden sonra)
IOUtils.copy
Sistem sürümleri
akışları:
import org.apache.commons.io.IOUtils;
import java.io.IOException;
public class Test {
public static void main(String[] args)
throws IOException, InterruptedException {
final Process process = Runtime.getRuntime().exec("/bin/sh -i");
new Thread(new Runnable() {public void run() {
try {
IOUtils.copy(process.getInputStream(), System.out);
} catch (IOException e) {}
} }).start();
new Thread(new Runnable() {public void run() {
try {
IOUtils.copy(process.getErrorStream(), System.err);
} catch (IOException e) {}
} }).start();
new Thread(new Runnable() {public void run() {
try {
IOUtils.copy(System.in, process.getOutputStream());
} catch (IOException e) {}
} }).start();
process.waitFor();
}
}
Ancak, sonuç kod, sh -i
komutunu çalıştıran gibi etkileşimli işlemler için çalışmaz. Sonraki durumda, sh
komutlarından hiçbirine yanıt yoktur.
Benim sorum şu: etkileşimli süreçlerle çalışacak akışları kopyalamak için bir alternatif önerebilir misiniz?
Öneriniz için teşekkürler. Ancak 'IOUtil.copy()', akış sonuna ulaşılana kadar çıkmaz, bu nedenle kodunuzdan 'sh' ile aynı sorunları olandan farklı değildir. – vitaut
Pls bu http://stackoverflow.com/questions/804951/is-it-possible-to-read-from-a-java-inputstream-with-a-timeout/808795#808795 adresine bir göz atın. –