小伙看你根骨奇佳,潜力无限,来学PHP伐。
ありがとうございます。 しかし、回答者は誰も正解しませんでした。すべての情報を提供しなかったのは私のせいです。 実際にはコード自体に問題はありませんが、その前にメモリ使用量を制限するセクション setrlimit があり、設定エラーによりメモリの上限が小さすぎるため、 argv の文字列は保存することさえできません。 その間違いはばかげています。 その間違いはばかげています。 その間違いはばかげています。 しかし、少なくとも argv が現在のプロセスのメモリを占有していないことはわかっています。 :P
setrlimit
argv
以下のコードを見てください
コンパイルして実行すると、出力は次のようになります
execvpのパラメータがNULL
execvp
NULL
コンパイルして実行
ご覧のとおり、現在の環境変数がここに出力されます。 config->args が NULL で終わらず、環境変数がたくさんある場合、このようなことが起こりますか?
コードを詳しく読んだわけではありません。execvp の呼び出し部分を簡単に見ただけです。 execvp が成功したかどうかを判断せずに、raise 関数を直接呼び出しました。 ただし、raise この関数は、実行中のプログラムにシグナルを送信するために使用されます。つまり、ここで execvp を呼び出している限り、事故なく SIGUSR1 シグナルが送信されます。 errnoはグローバル変数なので、ここではexecvpで設定されるというわけではありません。
raise
SIGUSR1
errno
ab をバックグラウンドに置きます。それでもエラーが発生する場合は、ab の実行エラーである可能性があります。
config->args ポインター配列の最後の要素が NULL に設定されていないようです。
config->args
execvp は、null ポインターに基づいてリストの終わりを決定します。
例:
ありがとうございます。
しかし、回答者は誰も正解しませんでした。すべての情報を提供しなかったのは私のせいです。
実際にはコード自体に問題はありませんが、その前にメモリ使用量を制限するセクション
setrlimit
があり、設定エラーによりメモリの上限が小さすぎるため、argv
の文字列は保存することさえできません。その間違いはばかげています。
その間違いはばかげています。
その間違いはばかげています。
しかし、少なくとも
argv
が現在のプロセスのメモリを占有していないことはわかっています。 :P以下のコードを見てください
リーリーコンパイルして実行すると、出力は次のようになります
リーリー
で終わらないようにコードを変更します。 リーリーexecvp
のパラメータがNULL
コンパイルして実行
リーリーご覧のとおり、現在の環境変数がここに出力されます。
config->args が
NULL
で終わらず、環境変数がたくさんある場合、このようなことが起こりますか?コードを詳しく読んだわけではありません。execvp
の呼び出し部分を簡単に見ただけです。execvp
が成功したかどうかを判断せずに、raise
関数を直接呼び出しました。ただし、raise
この関数は、実行中のプログラムにシグナルを送信するために使用されます。つまり、ここでexecvp
を呼び出している限り、事故なくSIGUSR1
シグナルが送信されます。errno
はグローバル変数なので、ここではexecvp
で設定されるというわけではありません。ab をバックグラウンドに置きます。それでもエラーが発生する場合は、ab の実行エラーである可能性があります。
config->args
ポインター配列の最後の要素がNULL
に設定されていないようです。execvp
は、null ポインターに基づいてリストの終わりを決定します。例:
リーリー