問題タブ [pclose]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
691 参照

c++ - popen() されたプロセスが終了時にデストラクタを実行するようにする方法は?

コマンドを実行するためのパイプがある場合、パイプされたコマンドはクリーンアップを行う必要がありますが、パイプを開始したプロセスにエラーがある場合、パイプされたコマンドはクリーンアップされません。この場合、パイプされたコマンドは SIGPIPE を取得していますか? cleanupPipe デストラクタが常に実行されるようにするにはどうすればよいですか? errorOccurred 例外がスローされると、cleanupPipe デストラクタが実行されていないことがわかります。例外をスローするように SIGPIPE ハンドラーを設定しているので、結果が SIGPIPE の場合、SIGPIPE の結果として例外がスローされ、スタックが巻き戻されたときに、デストラクタが実行されることを期待します。

0 投票する
1 に答える
7999 参照

php - Windows/php pclose と popen の問題

これが私のコードです:

Windowsマシンを使用しています。

次の警告が表示されます。

警告: popen(start /B php eveningQueries.php 2011_08_12,r): No error in C:\inetpub\GTSA\runOvernight.php 行 5

と:

警告: pclose() は、パラメーター 1 がリソースであると想定し、5 行目の C:\inetpub\GTSA\runOvernight.php で指定されたブール値です

0 投票する
1 に答える
305 参照

c - Oracle beqおよびpopen()

私はこのようなプログラムを持っています(これはPro * Cプリコンパイラ用です):

oracleへのtcp/ip接続を使用すると、問題なく動作します。しかし、BEQを使用すると、pclose()はerrno 10で-1を返します。誰かがBEQ接続で発生する可能性のある問題を説明するドキュメントに私を導くことができますか?オラクルの内臓のどこかに、すでにwait()呼び出しがあるようです…</ p>

0 投票する
0 に答える
424 参照

signals - 63 より大きいシグナル番号 (WTERMSIG() > 63) によって Linux アプリケーションが終了するのはなぜですか?

WTERMSIG() はどのようにして 67 や 123 などの 63 より大きい値に評価できますか?

これがどのように起こるかです。popen() を使用して unbuffer を実行し、それによってシェル スクリプトが実行されます。コードの次のブロックは、NULL を受け取るまで、popen() によって返されたファイル記述子から読み取る while() ループです。この後に pclose() が続きます。

まれに、pclose() が値 != -1 を返し、WIFSIGNALED() を true に設定します。奇妙な点は、WTERMSIG() が 63 より大きい値 (67 や 123 など) に評価されることです。何が原因でしょうか?

シェル スクリプトはすべてのタスクを完了しているため、途中で中断されることはありません。1 ~ 31 (標準信号) または 32 ~ 63 (拡張リアルタイム信号) を理解できました。当社のプラットフォーム (Timesys Linux) でシグナル 67 または 123 を生成しようとすると、エラーが発生します。

関連するコードの一部を次に示します。

0 投票する
3 に答える
3310 参照

c++ - pclose()がブロックされないように、ファイル記述子を強制的に閉じる方法はありますか?

popen()を使用してパイプを作成していますが、プロセスはサードパーティのツールを呼び出していますが、まれに終了する必要があります。

例外をスローしてスタックをアンワインドすると、アンワインドはサードパーティのプロセスでpclose()を呼び出そうとしますが、その結果は不要になります。ただし、pclose()は、Centos 4で次のスタックトレースでブロックされるため、返されません。

pclose()の呼び出しを強制的に成功させてから呼び出す方法はありますか?プログラムで、pclose()が成功するのを待ってプロセスがハングアップするのを回避できます。これは、 popen()されたプロセスとその作業を破棄したいですか?

ファイルを閉じる前に、なんらかの方法でファイルの終わりをpopen()されたファイル記述子に書き込む必要がありますか?

サードパーティのソフトウェアがそれ自体をフォークしていることに注意してください。pclose()がハングした時点で、4つのプロセスがあり、そのうちの1つは機能していません。

0 投票する
2 に答える
3628 参照

c - popen() で開かれたファイル記述子の pclose() は errno 10 を返します (子プロセスはありません)

Linuxを実行していますが、次のことを試みています。

  1. 現在のディレクトリで ls を実行します (popen を使用)
  2. 結果をバッファに出力します (パイプ記述子からの fread を使用)
  3. パイプを閉じます (pclose を使用)。

すべて正常に動作します (バッファーは ls の結果で正しく満たされます) が、pclose() の結果を確認すると -1 が返され、errno は 10 (子プロセスなし) に設定されます。なぜこれが起こっているのか分かりませんが、無視することはできません (なぜこれが起こっているのかについての合理的な説明がない限り)。

私のコード:

readFromPipeOrFile (バッファに書き込む関数) のコード:

前もって感謝します!編集: ERR_RETURN は、最初のパラメーターの条件が true かどうかをチェックする単なるマクロであり、そうであれば、2 番目のパラメーターの文字列を出力して -1 を返します。

0 投票する
3 に答える
2195 参照

c++ - popen によって作成されたプロセス ID を取得するにはどうすればよいですか?

コマンドを実行し、cmd のように結果を返す必要があります。

この要件を満たす唯一の方法を見つけました。 popen 関数を使用してコマンドを実行し、結果を返し、 pclose() 関数を使用してストリームを閉じて処理しました。

しかし、「ping 8.8.8.8 –t」のようにコマンドが終わらない場合、pclose()関数を使用してプロセスを閉じることができません。

popen() で作成した子プロセスをタスクマネージャで kill すると、pclose 関数は正常に動作します。

popen to kill によって作成されたプロセスIDを取得するにはどうすればよいですか?

===================
そして :
Windows で _popen() を使用する場合、PID を取得するにはどうすればよいですか?

0 投票する
1 に答える
708 参照

javascript - PHP - Windows のバックグラウンド コマンドは機能しているが、バックグラウンド プロセスが完了するのを待っている

別のphpスクリプトからバックグラウンドphpスクリプトを開始するために、多数の方法を試しました。ダウンロード用のデータベース ファイルの zip ファイルを作成する必要があります。単一のファイルを即座にダウンロードするように設定していますが、ファイルを圧縮する必要がある場合は、zip ファイルへのリンクを電子メールで送信するバックグラウンド プロセスを開始したいと考えています。プロセスは機能しますが、元のスクリプトはプロセスが完了するまで待機します。私は次の方法を試しましたが、私が言ったように、それらは機能しますが、バックグラウンドにはなりません。特定のインスタンス (大きなファイルの zip) で 8 分以上待たされましたが、それを待つユーザーはいません。

バッチ.バット

試した追加の方法:

また

また

JavaScriptを試してみても

また

Ajax でさえバックグラウンドにはなりません。

プロセスがバックグラウンドに移行しない理由を理解してください。前もって感謝します。