Ugrás a tartalomhoz

exit status

A Wikiszótárból, a nyitott szótárból


Főnév

exit status (tsz. exit statuses)

  1. (informatika) Az exit status (magyarul: kilépési állapotkód, kilépési kód) az a számérték, amit egy program visszaad, amikor befejezi a futását. Ezt az értéket a futtató környezet (pl. operációs rendszer, shell, szülőfolyamat) látja, és eldöntheti, hogy a program sikeresen vagy hibával zárult.

Gyakorlatilag a program jelez a külvilágnak:

  • 0 → sikeres futás
  • nem 0 → valamilyen hiba történt



Hogyan működik?

A legtöbb program egy main függvénytől indul, pl. C++-ban:

int main() {
    // program logika
    return 0; // exit status: 0 → sikeres kilépés
}

Itt a return 0; mondja meg az operációs rendszernek, hogy minden rendben ment.

Ha például hiba történt, más értéket adhatunk vissza:

int main() {
    std::cerr << "Error: Invalid arguments." << std::endl;
    return 1;  // exit status: 1 → hiba
}

Hol hasznos az exit status?

  • Ha más program hívja a te programodat (pl. shell script, makefile, CI pipeline), az ellenőrizni tudja, hogy a program sikeresen lefutott-e.
  • Unix/Linux parancssorban a $? változóban látod az utolsó parancs kilépési státuszát.

Példa:

$ ./my_program
$ echo $?  # kiírja a kilépési kódot

Ha 0 → OK. Ha nem 0 → valamilyen hiba.



Szokásos konvenciók

Exit status érték Jelentés
0 Sikeres lefutás
1 Általános hiba
2 Parancssori argumentum hiba
126 Parancs nem hajtható végre
127 Parancs nem található
128+n Sziganllal (signal) megszakított program (pl. 130 = Ctrl+C)

Természetesen saját alkalmazásban bármit definiálhatsz:

#define EXIT_SUCCESS 0
#define EXIT_FAILURE 1

A cstdlib könyvtárban (C++-ban) ezek a makrók elérhetők:

#include <cstdlib>

int main() {
    return EXIT_SUCCESS;  // ugyanaz, mint return 0;
}

Példa: Hibák jelezése különböző kódokkal

int main(int argc, char* argv[]) {
    if (argc < 2) {
        std::cerr << "Error: Missing argument." << std::endl;
        return 2;  // parancssori argumentum hiba
    }

    if (/* valami más hiba */) {
        return 3;  // más jellegű hiba
    }

    // normál működés
    return 0;  // siker
}

Mi a különbség return és exit() között?

  • A main-ből return val; ugyanazt eredményezi, mint exit(val);
  • De ha nem a main függvényben vagyunk, és a teljes programot akarjuk befejezni → exit(val); kell:
#include <cstdlib>

void fatalError() {
    std::cerr << "Fatal error occurred." << std::endl;
    std::exit(1);  // azonnali programkilépés exit status 1-gyel
}
  • exit() → teljes folyamat leáll, globális destruktorok lefutnak.
  • abort() → teljes folyamat azonnal megszakad, destruktorok nem futnak le → crash dump.



Összefoglalás

👉 Exit status = program végén visszaadott egész szám → a külvilág jelzése, hogy a program sikeresen lefutott-e.

👉 Szokásos convention:

  • 0 = siker
  • 1 vagy más ≠ 0 = hiba

👉 Miért fontos?

  • Automatizálásban, shell szkriptekben, CI/CD-ben
  • Programok egymás közti kommunikációjában

👉 Hogyan adjuk vissza?

  • return <kód>; a main-ből
  • vagy bárhonnan: std::exit(<kód>);

👉 Hol látod? Linux/Mac shell → $? változóban.