linux下execvp失败设置errno=7的原因是什么?
伊谢尔伦
伊谢尔伦 2017-04-17 15:30:43
0
4
764
伊谢尔伦
伊谢尔伦

小伙看你根骨奇佳,潜力无限,来学PHP伐。

全員に返信(4)
迷茫

ありがとうございます。
しかし、回答者は誰も正解しませんでした。すべての情報を提供しなかったのは私のせいです。
実際にはコード自体に問題はありませんが、その前にメモリ使用量を制限するセクション setrlimit があり、設定エラーによりメモリの上限が小さすぎるため、 argv の文字列は保存することさえできません。
その間違いはばかげています。
その間違いはばかげています。
その間違いはばかげています。
しかし、少なくとも argv が現在のプロセスのメモリを占有していないことはわかっています。 :P

いいねを押す +0
小葫芦

以下のコードを見てください

リーリー

コンパイルして実行すると、出力は次のようになります

リーリー

execvpのパラメータがNULL

で終わらないようにコードを変更します。 リーリー

コンパイルして実行

リーリー

ご覧のとおり、現在の環境変数がここに出力されます。
config->args が NULL で終わらず、環境変数がたくさんある場合、このようなことが起こりますか?


コードを詳しく読んだわけではありません。execvp の呼び出し部分を簡単に見ただけです。
execvp が成功したかどうかを判断せずに、raise 関数を直接呼び出しました。
ただし、raise この関数は、実行中のプログラムにシグナルを送信するために使用されます。つまり、ここで execvp を呼び出している限り、事故なく SIGUSR1 シグナルが送信されます。
errnoはグローバル変数なので、ここではexecvpで設定されるというわけではありません。

いいねを押す +0
PHPzhong

ab をバックグラウンドに置きます。それでもエラーが発生する場合は、ab の実行エラーである可能性があります。

いいねを押す +0
左手右手慢动作

config->args ポインター配列の最後の要素が NULL に設定されていないようです。

execvp は、null ポインターに基づいてリストの終わりを決定します。

例:

リーリー
いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート