2017-10-25 22 views
0

ノードアプリケーションがあり、child_processを使用して非常に大きなファイルを作成しています。関連するオプションを設定しているにもかかわらず、すぐに理由が「null」で終了するように思われます。手動でコマンドを実行すると、.js/eventスレッドが実行され続けるので、そうではありません。 ..」)編集済みURLですchild_processが終了しないときに終了する

const spawn = require('child_process').spawn; 
var options = {stdio: 'ignore', detatched: true}; 

var ls = spawn('wget', ['http://...', '-O', './file.sav'], options); 
console.log("PID is ", ls.pid); 
ls.unref(); 
+0

'wget'を起動し、ノードプロセス(' wget'プロセスではなく)が終了するようにしたい( '' wget'をバックグラウンドで)ように思えます。それはあなたの意図ですか?また、_ "detached" _をミスタイプしました。 – robertklep

+0

今スペルを修正しました!はい、そうです。後でPIDを使ってプロセスを管理すると、ノードで何が起きるのかはほとんど無関係です。 – user4893295

+0

しかし、スペルを修正しても、プロセスを実行したままではありません@robertklep – user4893295

答えて

0

は、最後にそれを考え出した。私はウォッチモードでPM2(プロセス・マネージャ)を実行していた。これは、各時間のwgetは、ディスクへの書き込みを開始したノードのアプリを再起動しました!

これは面白いことですが、wgetがファイルを書き終えるのを待つのではなく、ディスクへの書き込み開始時に起こっていました。また、コードがプロセスを参照しなくても、これは起こりませんでしたプロセスが終了するのを待つ時間Nodeアプリケーションを使用します。

pm2の設定で書き込まれているディレクトリを除外して問題を解決してください。

関連する問題