环境是Linux,比如,我的启动命令是:java package1.Main
然后我希望能够执行一个命令关闭上面的进程,kill肯定是不能用的,太暴力了。
我希望像这样:java tool.myTool -close package1.Main
tool.myTool是另一个java程序,是否可以通过它拿到package1.Main的标准输出流,然后往里面写"close"命令,然后package1.Main的一个线程就可以从标准输入流中获得"close"命令,然后做一些关闭工作呢?如果能够直接对运行的package1.Main下命令就更好了,大家能给个思路么?
还有,启动一定要用java 命令前缀,有别的好方法么?
然后我希望能够执行一个命令关闭上面的进程,kill肯定是不能用的,太暴力了。
我希望像这样:java tool.myTool -close package1.Main
tool.myTool是另一个java程序,是否可以通过它拿到package1.Main的标准输出流,然后往里面写"close"命令,然后package1.Main的一个线程就可以从标准输入流中获得"close"命令,然后做一些关闭工作呢?如果能够直接对运行的package1.Main下命令就更好了,大家能给个思路么?
还有,启动一定要用java 命令前缀,有别的好方法么?
你可以参考下tomcat的 start 和shutdown程序
什么叫暴力? 你真了解了kill流程吗?
你只要保证你的App独占一个JVM就可以了,最后main返回的时候就可以退出java进程了。再说了。Kill也没有什么不好的,我以前学MFC的时候,TerminateProcess也是有的。
echo $!> pid.txt我都是在 sh 文件中这样写的,运行后会自动把 java 那个进程号记录到 pid.txt 这个文件中,以后就可以使用这个文件中的 pid 来 kill 掉。
start)
java test &
echo $! > pid;;
end)
kill -hup 'cat pid';;
esac
http://www.ibm.com/developerworks/ibm/library/i-signalhandling/listing1.html#windows
http://www.ibm.com/developerworks/ibm/library/i-signalhandling/