グローバル環境変数とfork()とexec()に関する質問

グローバル環境変数とfork()とexec()に関する質問

私が理解したいのは、親プロセスがエクスポートした変数を子プロセスが継承する場所です。

私が知りたいのは、エクスポートされた環境変数を子プロセスが継承する場所です。 exec()システムコールがfork()によって生成された環境変数を上書きすることを理解しています...しかし、すべての環境変数がオーバーライドされると、exec()はどのようにエクスポートした環境変数を新しく作成されたサブプロセスに含めるのですか? ?私の推測は、エクスポートされた環境変数が何らかの方法で上書きの対象から除外されることです。しかし、これを確認することはできません。

編集する私の要件をより明確に表現するために質問を編集しました。

ベストアンサー1

グローバル環境変数はありません。彼らは両親から子供に渡されます。

  • fork環境変数は変更されません。
  • exece事後修正は環境変数を変更しません。
  • exec変更後のe上書き環境変数。

環境を変更するためにe末尾のsを使用することに加えて、次のこともできます。exec

int pid = fork() //new process with same environment variables
if (pid == 0) {
    putenv   //add some environment variables
    unsetenv //remove some environment variables
    exec     //replace program. non e version of exec.
} …

おすすめ記事