Heim > Java > javaLernprogramm > Wie vermeide ich Deadlocks beim Lesen der JSch-Befehlsausgabe?

Wie vermeide ich Deadlocks beim Lesen der JSch-Befehlsausgabe?

Patricia Arquette
Freigeben: 2024-11-02 06:26:29
Original
983 Leute haben es durchsucht

How to Avoid Deadlocks When Reading JSch Command Output?

So lesen Sie die JSch-Befehlsausgabe kontinuierlich

Wenn Sie einen Befehl über JSch ausführen, ist es wichtig, die Ausgabe kontinuierlich zu lesen, um daraus resultierende Deadlocks zu vermeiden ein voller Ausgabepuffer. So erreichen Sie dies:

<code class="java">ChannelExec channel = (ChannelExec)session.openChannel("exec");

channel.setCommand(...);

ByteArrayOutputStream outputBuffer = new ByteArrayOutputStream();
ByteArrayOutputStream errorBuffer = new ByteArrayOutputStream();

InputStream in = channel.getInputStream();
InputStream err = channel.getExtInputStream();

channel.connect();

while (!channel.isClosed()) {
    // Read stdout continuously
    while (in.available() > 0) {
        outputBuffer.write(in.read(tmp, 0, 1024));
    }

    // Read stderr continuously
    while (err.available() > 0) {
        errorBuffer.write(err.read(tmp, 0, 1024));
    }

    try {
        Thread.sleep(1000);
    } catch (Exception e) {}
}

System.out.println("output: " + outputBuffer.toString("UTF-8"));
System.out.println("error: " + errorBuffer.toString("UTF-8"));

channel.disconnect();</code>
Nach dem Login kopieren

Durch kontinuierliches Lesen der Ausgabe wird die Befehlsausführung nicht blockiert und die Ausgabe kann bei Bedarf abgerufen und verarbeitet werden.

Das obige ist der detaillierte Inhalt vonWie vermeide ich Deadlocks beim Lesen der JSch-Befehlsausgabe?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage