std::getenv în C++

Citește valoarea unei variabile de mediu (de exemplu HOME sau PATH); returnează nullptr dacă nu există.

Sintaxă
char* getenv(const char* nume);

Ce face std::getenv

Variabilele de mediu sunt perechi nume=valoare primite de program de la sistem: HOME (directorul utilizatorului), PATH, LANG sau variabile de configurare puse de tine (DB_PAROLA, MOD_DEBUG).

std::getenv returnează un pointer la valoare sau nullptr dacă variabila nu există. Verifică mereu pointerul înainte să-l folosești; transformarea directă în std::string a unui nullptr este comportament nedefinit. Nu modifica textul primit.

Parametri

Parametru Descriere
nume Numele variabilei.

Ce returnează

Pointer la valoare, sau nullptr.

Exemple

Exemplul 1: Directorul utilizatorului

#include <cstdlib>
#include <print>

int main() {
    if (const char* home = std::getenv("HOME")) {
        std::println("HOME = {}", home);
    }
}

Rezultat posibil (diferă la fiecare rulare)

HOME = /Users/ana

Exemplul 2: Variabilă lipsă, cu valoare implicită

#include <cstdlib>
#include <print>
#include <string>

std::string din_mediu(const char* nume, const std::string& implicit) {
    const char* valoare = std::getenv(nume);
    return valoare ? valoare : implicit;
}

int main() {
    std::println("PATH este setat: {}", std::getenv("PATH") != nullptr);
    std::println("Port: {}", din_mediu("DEXBLOG_PORT_INEXISTENT", "8080"));
}

Rezultat

PATH este setat: true
Port: 8080

Greșeli frecvente

  • Scrii std::string s = std::getenv("X"); fără verificare: dacă variabila lipsește, programul se oprește brusc.

Comenzi înrudite

  • std::system: Rulează o comandă în shell-ul sistemului de operare și așteaptă să se termine.
  • std::exit: Oprește imediat programul cu un cod de ieșire; rulează funcțiile atexit și distruge obiectele statice, dar nu și pe cele locale.