新しいプロセスはfork/execによって作成されます。 Execはコマンドラインの引数を設定しますが、それらの引数の数がargc
に設定されていることはわかりません。argcはどこから来たのですか?
main()
は、新しいプロセスで実行する最初の機能であると想定されていますが、argc
はすでに設定されています。
どこに設定されていますか? main
が呼び出される前にパラメータを数える何らかの設定コードでなければなりませんが、私が読んだことは何も、このセットアップコードが何をしているのか、それがどこにあるのかを説明するものは何もありません。
これはlibc
ですか?これはすべてのOSで同じですか、いくつかの仕様でカバーされていますか?これ以外にセットアップコードで何が起きているのかはどこで分かりますか?グローバルをインスタンス化する前に呼び出されますか?
あなたはどの言語に興味がありますか? –
言語仕様では、mainが実行されるまでに何が行われているかが詳しく説明されています。見つけ出すためにそれらを読んでください。 OSによって行われることと、言語ランタイムによって行われることは、実装によって異なります。あなたの質問は少し曖昧なので、もっと言いにくいです。これは非常に大きな話題であり、実装に固有のものです。 –
これはシステムに非常に依存しています。例えばLinuxは、カーネル内のexecveシステムコール(do_execve()関数)内のargvの項目を数えます。 – nos