問題タブ [execv]
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.
winapi - _execv() を使用して子プロセスを呼び出すと、Windows サービスが終了する
Windows サービスとして設計された C++ Windows アプリケーションがあります。アップデーターを定期的に実行して、新しいバージョンがあるかどうかを確認します。アップデーターを実行するには、_execv()
を使用します。アップデーターは新しいバージョンを探してダウンロードし、Windows サービスを停止し (これらのアクションはすべてログに記録されます)、ファイルを置き換えて、サービスを再開します。CLIモードで(サービスモードに入らないで)それを行うと、そのようにうまく機能します。私のログ ファイルによると、子プロセスは起動されますが、親プロセス (Windows サービス) は終了します。
Windowsサービスで子プロセスを起動することさえ「許可」されていますか?なぜサービスが予期せず終了するのですか? 私のログファイルにはエラーが表示されません(ログに書き込まれるセグメンテーション違反なども監視しています)。
fork - UNIXでfd 2を一時的に無効にする方法はありますか?
fork と execv を使用して別のプロセスを起動するアプリケーションを作成しました。ステータスを通知するパイプを作成し、起動したプロセスのメイン エントリから、正しく起動されたことを通知するバイトを書き込みます。それ以外の場合、フォークされたプロセスで書き込みパイプが閉じられているため、read は 0 を返します。
唯一の問題は、プロセスが起動しない場合 (ライブラリがない場合) です。このことについて stderr にメッセージが表示されます。メッセージはシェルに書き込まれます。何が問題なのか。静かにやればいいのに。ただし、execv の前に close(2) を実行すると、何が必要かというメッセージが表示されません。それでも、stderr 用に fd 2 を開いたままにしたいと思います。
c - C execv()関数は子プロセスを終了しますか?
これが私のコードの内訳です。
私は子供をフォークし(そして子供のpidをファイルに登録し)そしてそれからそれ自身のことをするプログラムを持っています。子は、プログラマーがargvで威厳のあるプログラムになります。子が実行を終了すると、(SIGUSR1を使用して)シグナルを親プロセスに送り返し、親が子をファイルから削除することを認識します。親は1秒停止し、テーブルを更新して削除されたエントリを確認し、中断したところから続行する必要があります。
問題は、after execvが正常に開始および終了した後(return 0の前のprintfステートメントで通知されます)、switchステートメントの残りのコマンドが実行されていないことです。execvに^Cコマンドが含まれているのではないかと思います。これは、終了時に子を強制終了するため、残りのコマンドを終了することはありません。私はmanページを調べましたが、この主題に関して有用なものは何も見つかりませんでした。
ありがとう!
c++ - C++ で子プロセスを照会する方法
私の C++ プログラムは、fork() と execv() を使用していくつかの子プロセスを生成します。これらのプロセスを照会するにはどうすればよいですか? シャットダウンしたい場合は、どうすればよいですか?
c++ - バックグラウンドで実行中の子プロセスをフォアグラウンドにする方法
fork() と execv() を使用して、バックグラウンドで実行されているいくつかの子プロセスを生成し、そのうちの 1 つをフォアグラウンドに移動したい場合、どうすればよいでしょうか?
フォアグラウンドまたはバックグラウンドでプロセスを開始できるシェルを作成しようとしています。
c++ - execv はこれをフォアグラウンドまたはバックグラウンドで実行しますか?
私は私のプログラムでこれを持っています:
コマンドが実際に正しく実行されているかどうかはわかりません。どうすればわかりますか?これはバックグラウンドで実行されていますか?
c++ - プログラムのpidをforkとexecvで開始する方法
このプログラムでは、execvを使用して別のプロセスを開始します。
開始されたプログラムのpidを取得するにはどうすればよいですか?
process - execv は現在のプロセスをこのように置き換えますか?
私のコードで execv を呼び出し、execv の呼び出しの後に数行のコードがある場合、execv によって開始されたものはすべて現在のプロセスを置き換えるため、それらの行は実行されるでしょうか?それとも実行されないでしょうか?
c++ - 開始したプロセスが OSX アクティビティ モニターに表示されないのはなぜですか?
子プロセスを開始するために fork と execv を使用しています。htop を実行すると、それらのプロセスを見つけることができます。ただし、すべてのプロセスを表示するように設定しても、OSX アクティビティ モニターには表示されません。何故ですか?
htop の S 列には、すべてのプロセスの Z が表示されます。どういう意味ですか?それと何か関係があるのでしょうか?
c++ - 子プロセスからの戻りコードを読み取る方法
fork と execv を使用して子プロセスを実行します。親プログラムでは、これがあります:
子プロセスが終了するのを待ってから、戻りコードを表示しますか?