【发布时间】:2011-05-16 05:14:07
【问题描述】:
我刚刚查看了新的scala.sys 和scala.sys.process 包,看看这里是否有帮助。但是,我完全不知所措。
有人有关于如何实际启动流程的示例吗?
还有,我最感兴趣的是:你能分离进程吗?
当父进程结束时,分离的进程将继续运行,是 Ant 的弱点之一。
更新:
分离是什么似乎有些混乱。从我当前的项目中有一个真实的例子。一次使用 z-Shell,一次使用 TakeCommand:
Z 壳:
if ! ztcp localhost 5554; then
echo "[ZSH] Start emulator"
emulator \
-avd Nexus-One \
-no-boot-anim \
1>~/Library/Logs/${PROJECT_NAME}-${0:t:r}.out \
2>~/Library/Logs/${PROJECT_NAME}-${0:t:r}.err &
disown
else
ztcp -c "${REPLY}"
fi;
接受命令:
IFF %@Connect[localhost 5554] lt 0 THEN
ECHO [TCC] Start emulator
DETACH emulator -avd Nexus-One -no-boot-anim
ENDIFF
在这两种情况下,它都是一劳永逸的,模拟器已启动,并且即使在脚本结束后仍将继续运行。当然,必须编写两次脚本是一种浪费。所以我现在研究 Scala 以实现没有 cygwin 或 xml 语法的统一进程处理。
【问题讨论】:
-
disown真的是一个 shell 的东西,而不是一个 Unix 的东西。它所做的只是避免在退出时向子进程发送 SIGHUP 的 shell 行为。
标签: scala