ホームページ > バックエンド開発 > C++ > 実行可能ファイルの名前を提供する argv[0] を常に信頼できますか?

実行可能ファイルの名前を提供する argv[0] を常に信頼できますか?

Susan Sarandon
リリース: 2024-12-14 11:56:10
オリジナル
838 人が閲覧しました

Can We Always Trust argv[0] to Provide the Executable's Name?

argv[0] の謎: 保証されたプログラム名の問題

C または C で main() の機能を利用する場合、次のような永遠の疑問が生じます。実行可能ファイルの名前を明らかにするために argv[0] に頼ることができますか、それともそれは普遍性のない単なる慣例でしょうか?適用性?

この謎を解明するために、標準化の歴史を詳しく調べてみましょう。

標準規格の勅令

согласно ISO C11、argv[0] にある文字列、 argc がゼロを超える場合、 はプログラム名を表します。ただし、この表現は絶対的なものではありません。プログラム名がホスト環境の奥深くから見えない場合、argv[0][0] はヌル文字に戻ります。

不気味なことに、標準では argv[0] がプログラム名を「表す」というアンダースコアが付けられます。同一でない表現が生じる可能性が残されています。この不確実性は、その真実性を脅かしています。

問題をさらに謎に包み込むために、標準では、argv[0] から argv[argc-1] に格納されている値はホスト環境の気まぐれに影響され、

ホスト環境 Houdini

これ謎めいたスタンスは、ホスト環境に argv[0] を自由に操作する権限を与えます。プログラム名は消えたり、空の文字列に置き換えられたり、コードブレーカーを白紙にするような複雑な暗号に変形したりする可能性があります。

連鎖しない実装

明らかな無政府状態にも関わらず、ISO 標準は、この混乱における秩序の尺度。実装定義とは、標準的な用語として、argv[0] の処理を​​説明するドキュメントを提供することを実装に義務付けるものです。 exec ファミリが argv[0] に大混乱をもたらす UNIX の野蛮な領域でも、標準ではそのような逸脱を文書化することが義務付けられています。

結論

argv[0] は頻繁に実行可能ファイルへのパスを明らかにする照明のビーコンですが、その精度と一貫性はホスト環境の手に委ねられます。 argv[0] の正確性を確認するには、ホスト環境のドキュメントを参照することが不可欠なツールになります。ただし、argv[0] が最終的なプログラム名として普遍的に有効であるかどうかは、依然としてとらえどころのない夢です。

以上が実行可能ファイルの名前を提供する argv[0] を常に信頼できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート