7
Cでは、プログラムの引数を受け取るのに本当に必要なのはint main(int argc, char *argv[])
ですか?言い換えれば、署名がint main(void)
のmain関数を定義する場合、POSIXインタフェースのみを使用してプログラム引数を回復することは可能ですか?POSIXでは、メイン(無効)コマンドライン引数を回復できますか?
私は何かが欠けてるように私はそれを見て、感じる:
- POSIXは、他のプロセス固有の情報を取得するために複数のインタフェースを定義します。例えば、環境変数(おそらくC99から継承されているが、
unsetenv()
のような機能で拡張されている)とホストID(gethostid()
)のためのインターフェースがある。 - 特定のオペレーティングシステムでは、コマンドライン引数を取得するための「グローバル」な方法が定義されています。たとえば、Windowsは
GetCommandLineW
とCommandLineToArgvW
関数を提供し、HP-UXはグローバル変数__argc_value
と__argv_value
を提供します。 Linuxには/proc/self/cmdline
があり、これはargv
とargc
に解析できます。
私はそれが実装定義されていると思います。 –
関数 'int f(void)'を考えてみましょう。あなたは呼び出し元から関数に渡された引数にどのようにアクセスしますか? – Olaf
Windowsでは、Windowsは[完全実装定義のメイン定義方法](https://msdn.microsoft.com/en-us/library/windows/desktop/ms633559%28v=vs.85%29)を使用しています。 aspx)。これは、別々の非標準API関数を介してコマンドライン引数を取得する必要性を説明することができます。 – Lundin