JXA(JavaScript for Automation)MacアプリからHTTPサーバーを実行しようとしています。この部分は次のように簡単です。
app.doShellScript("python -m SimpleHTTPServer");
(詳細はこちら:https://github.com/JXA-Cookbook/JXA-Cookbook/wiki/Shell-and-CLI-Interactions)
問題は、それを実行した後、シェルスクリプトが実際に終了しないため、アプリケーションプロセスが停止することです。
それでは...サーバーをバックグラウンドプロセスとして実行する必要がありますか?残念ながら、私が試したことのどれも、制御をJXAアプリに戻していません。
これが私が試したことです:
app.doShellScript("nohup python -m SimpleHTTPServer > /dev/null <&- >&- 2>&- & disown");
app.doShellScript("( python -m SimpleHTTPServer > /dev/null & )");
$.system("( python -m SimpleHTTPServer & )");
exit 0
cron
サーバーを起動するシェルスクリプトをすぐに起動するジョブを起動しようとしましたが、CRONにサンドボックスの問題があるようです。$.NSTask
最終的な解決策には、JXAアプリケーションから完全に100%ゼロ知識が切り離された方法で起動されるバックグラウンドプロセスが含まれるようです。
したがって、システムを再起動すると、これが機能することがわかります。
$.system("nohup python -m SimpleHTTPServer > /dev/null &");
console.log("Non-blocking!");
(私のゴム製のアヒルであるStackOverflowに感謝します。)
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加