我正在尝试从JXA(自动化JavaScript)Mac应用程序运行HTTP服务器。这部分很容易,就像:
app.doShellScript("python -m SimpleHTTPServer");
(此处提供更多信息:https://github.com/JXA-Cookbook/JXA-Cookbook/wiki/Shell-and-CLI-Interactions)
问题在于,执行完此操作后,由于shell脚本实际上并未退出,因此应用程序进程停止了。
那么……我们只需要使服务器作为后台进程运行就可以了吗?不幸的是,我尝试过的所有事情都没有将控制权转移回JXA应用程序。
这是我尝试过的:
app.doShellScript("nohup python -m SimpleHTTPServer > /dev/null <&- >&- 2>&- & disown");
app.doShellScript("( python -m SimpleHTTPServer > /dev/null & )");
$.system("( python -m SimpleHTTPServer & )");
exit 0
结尾的shell脚本cron
作业,该作业将立即启动将启动服务器的shell脚本,但是CRON似乎存在沙箱问题。$.NSTask
似乎最终的解决方案将涉及启动后台进程,而该进程将完全脱离JXA应用程序 100%零知识。
答案 0 :(得分:0)
因此,在系统重新启动后,事实证明这可行:
$.system("nohup python -m SimpleHTTPServer > /dev/null &");
console.log("Non-blocking!");
(感谢StackOverflow成为我的rubber duck。)