日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > java >内容正文

java

java 下载处于挂起状态_即使脚本执行完成,Java也会挂起。

發(fā)布時(shí)間:2025/4/17 java 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java 下载处于挂起状态_即使脚本执行完成,Java也会挂起。 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

我試圖從我的Java代碼中執(zhí)行腳本,看起來像:

Process p = Runtime.getRuntime().exec(cmdarray, envp, dir); // cmdarray is a String array

// consisting details of the script and its arguments

final Thread err = new Thread(...); // Start reading error stream

err.start();

final Thread out = new Thread(...); // Start reading output stream

out.start();

p.waitFor();

// Close resources

腳本的執(zhí)行結(jié)束了(它不再是PID)了,但是Java被卡住了。

waitFor()

過程的方法!.

是的,我在兩個(gè)單獨(dú)的線程中讀取輸出和錯(cuò)誤流。是的,它們?cè)谀┒诉B接(之后

WAIT()

)

腳本基本上安裝了一些RPM(比如10個(gè)左右)并對(duì)其進(jìn)行配置。所以腳本運(yùn)行60秒多一點(diǎn)。

它看起來類似于以下內(nèi)容:

#!/bin/sh

#exec 3>&1 >/var/log/some_log 2>&1

# If the above line is uncommented, Java recognizes that the

# process is over and terminates fine.

tar xzf a-package-having-rpms.tar.gz

cd unpacked-folder

(sh installer-script.sh) #This installs 10 odd rpms in a subshell and configures them

cd ..

rm -rf unpacked-folder

exit 0

令人震驚的是,如果我把下面的一行放在腳本(頂部),Java就知道腳本已經(jīng)結(jié)束,它完美地終止了這個(gè)過程。

exec 3>&1 > /var/log/some_log 2>&1

對(duì)于記錄,腳本不會(huì)生成任何輸出。零字符!。因此,將exec語(yǔ)句置于此處毫無意義!

但是,神奇的是,將腳本中的Excel語(yǔ)句放入Java中就可以了!.

為什么??

如何避免腳本中的不合邏輯的exec語(yǔ)句?.

如果您對(duì)installer-script.sh的外觀感興趣,那么:

#!/bin/sh

exec 3>&1 >>/var/log/another-log.log 2>&1

INSDIR=$PWD

RPMSDIR=$INSDIR/RPMS

cd $RPMSDIR

#

rpm -i java-3.7.5-1.x86_64.rpm

rpm -i --force perl-3.7.5-1.x86_64.rpm

rpm -i --nodeps mysql-libs-5.0.51a-1.vs.i386.rpm

rpm -i --nodeps mysql-5.0.51a-1.vs.i386.rpm

rpm -i --nodeps mysql-server-5.0.51a-1.vs.i386.rpm

rpm -i --nodeps perl-DBD-MySQL-3.0007-2.el5.i386.rpm

rpm -i --nodeps perl-XML-Parser-2.34-6.1.2.2.1.i386.rpm

.

.

.

現(xiàn)在,為什么Java需要知道第一個(gè)腳本中的Excel命令已經(jīng)結(jié)束了?

我怎樣才能避開那個(gè)主管?,特別是因?yàn)榈谝粋€(gè)腳本不產(chǎn)生任何輸出。

屏住呼吸等待答案!

總結(jié)

以上是生活随笔為你收集整理的java 下载处于挂起状态_即使脚本执行完成,Java也会挂起。的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。