- izolovaný samostatný program - neřeší se procesy, …
- obsahuje POSIX, ISO C, hlavičkocé soubory, …
- FIPS 151-1 a 151-2 - upřesnění normy POSIX.1 směrem k praktickému použití
- Volitelné = nemusí dané normy obsahovat
- Volby při kompilaci (podporuje systém řízení prací?)
- Viz též
feature_test_macro(4)
sysconf(2)
- runtime globální limity =
sysconf()
- Závislost na souborovém systému.
- Souborové limity =
pathconf(2)
- Před spuštěním programu jsou *přípravné * -
crt1.o,
main()
char ** argv - typicky čteme, ale lze měnit
argv, envp - jakoby za zásobníkem, mezi datovou sekcí a zásobníkem
- při zvětšení se přesunou jakoby na haldu
- 8 bitové číslo se znamánkem
- návrat z
main() nebo _exit(2)
exit(3) - knihovní funkce, vylívaní bufferu, destrukce, …
_exit(2) - služba jádra pro ukočení procesu, žádné vylívaní bufferu, destrukce. Pouze ukončení procesu.
abort(3) - ukončí proces zasláním signálu SIGABRT a uloží obraz adresového prostoru do souboru core.
- chybně nastavené proměnné prostředí nezamezí průběhu
- vs cmdline args ukončí program
- procesor používá adresy např 8x (16x) menší
- načítá tyto řádky (např osmice bajtů)
- zarovnán pro libovolný typ proměnné -> adresa dělitelná 8
- například skok z rekurze nebo více vnořených funkcí