Rumah  >  Artikel  >  Java  >  JSch Command Hang-Up: Bagaimana Mengelakkan Kebuntuan Semasa Membaca Output Besar?

JSch Command Hang-Up: Bagaimana Mengelakkan Kebuntuan Semasa Membaca Output Besar?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-10-28 12:42:02151semak imbas

  JSch Command Hang-Up:  How to Avoid Deadlock When Reading Large Output?

JSch Command Output Hang-up: A Case Study

Apabila melaksanakan arahan melalui JSch, anda mungkin menghadapi situasi di mana kod kelihatan digantung semasa cuba membaca daripada aliran input ChannelExec. Untuk menyelesaikan masalah ini, adalah penting untuk memastikan bacaan berterusan daripada output sambil memantau status arahan.

Pertimbangkan coretan kod berikut:

<code class="java">while ((numRead = reader.read(buf)) != -1) {
    // ...
}</code>

Jika arahan menghasilkan sejumlah besar output, ia boleh mengisi penimbal keluaran, menyebabkan arahan terhenti sementara menunggu penimbal dimakan. Ini boleh membawa kepada senario kebuntuan.

Untuk menangani isu ini, anda harus membaca kedua-dua output standard dan ralat standard secara berterusan, memantau status arahan. Ini memastikan penimbal keluaran kekal kosong, membenarkan arahan selesai tanpa gangguan.

<code class="java">while (true) {
    // Read from standard output
    while (in.available() > 0) { // Replace reader with in and err for error handling
        // ...
    }
    // Read from standard error
    while (err.available() > 0) { // Replace reader with in and err for error handling
        // ...
    }
    if (channel.isClosed()) {
        // ...
    }
    try { 
      Thread.sleep(1000);
    } catch (Exception ee) {
    }
}</code>

Dengan membaca secara berterusan daripada aliran keluaran dan ralat serta menyemak status saluran secara berkala, anda boleh mengelakkan penutupan telefon dan memastikan perintah itu berjaya diselesaikan.

Atas ialah kandungan terperinci JSch Command Hang-Up: Bagaimana Mengelakkan Kebuntuan Semasa Membaca Output Besar?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn