Bosh sahifa Wiki Exit code

Exit code

Exit code — jarayon tugagach operatsion tizimga qaytaradigan butun sonli holat qiymatidir. U dastur natijasining qisqa, mashina o‘qiydigan xulosasini beradi: ko‘p Unix muhitlarida 0 muvaffaqiyatni, noldan farqli qiymat esa ma’lum xato yoki alohida holatni bildiradi. Exit code matnli logning o‘rnini bosmaydi; u shell, CI tizimi yoki boshqa parent processga keyingi qarorni qabul qilish uchun signal beradi.

Qaytarilish mexanizmi

Dastur normal tugaganda runtime yoki exit funksiyasi belgilangan qiymatni kernelga uzatadi. Parent process wait oilasidagi tizim chaqiruvlari orqali bolaning yakuniy holatini oladi. Shell oxirgi buyruq kodini maxsus o‘zgaruvchida saqlaydi; POSIX shell’da u $? orqali o‘qiladi:

backup --target daily
code=$?
if [ "$code" -ne 0 ]; then
  echo "Backup bajarilmadi" >&2
fi

Jarayon signal sabab to‘xtasa, operatsion tizim wait status ichida signal raqamini ham saqlaydi. Shell uni ko‘pincha 128 + signal ko‘rinishida namoyish etadi, ammo bu barcha platformalar uchun yagona portable shart emas. Windows va Unix kod oralig‘i hamda ko‘rsatish usuli farq qiladi.

Semantika va shartnomalar

Exit kodlar dastur interfeysining bir qismidir. 0 odatda to‘liq muvaffaqiyat, 1 umumiy xato bo‘lsa-da, ayrim vositalarda 1 oddiy “natija topilmadi” holatini anglatadi. Masalan, qidiruv vositasi mos qator yo‘qligini ishlashdagi nosozlikdan ajratishi mumkin. Shu sababli integratsiya hujjatdagi jadvalga tayanadi, taxminiy ma’noga emas.

Kodlar haddan tashqari ko‘p va beqaror bo‘lsa, iste’molchi versiyalar orasida buziladi. Yaxshi CLI cheklangan, hujjatlashtirilgan toifalarni beradi: noto‘g‘ri argument, ruxsat muammosi, vaqtinchalik tashqi nosozlik yoki qisman natija. Batafsil sabab standard error va structured logda beriladi. Maxfiy tafsilot exit kodga yoki ommaviy outputga joylanmaydi.

Pipeline va avtomatlashtirish

Shell’da && faqat oldingi kod nol bo‘lsa, || esa noldan farqli bo‘lsa keyingi buyruqni bajaradi. Pipeline’ning yakuniy kodi shell sozlamasiga qarab faqat oxirgi komponentni yoki muvaffaqiyatsiz komponentni aks ettirishi mumkin. Muhim skriptlarda pipefail siyosati ongli tanlanadi va kutilgan “topilmadi” holati umumiy xatodan alohida ishlanadi.

CI job exit codega qarab bosqichni yashil yoki qizil deb belgilaydi. Retry faqat vaqtinchalik xatolarga qo‘llanadi; syntax error yoki invalid configurationni qayta urinish tuzatmaydi. Testlar har bir hujjatlashtirilgan kodni, signal bilan to‘xtashni va output oqimlari ajratilganini tekshiradi. Monitoring esa kod toifalari bo‘yicha nosozlik nisbatini ko‘rsatadi.

Dastur dizaynidagi yondashuv

Library ichida chuqur functionning darhol exit chaqirishi odatda yomon contract hisoblanadi: caller cleanup, transaction rollback yoki test assertionni bajara olmaydi. Ichki qatlam typed error qaytaradi, executable’ning eng yuqori qatlami uni hujjatlashtirilgan exit code va xavfsiz xabarga aylantiradi. Cleanup muvaffaqiyatsizligi asosiy xatoni yopib yubormasligi kerak; ikkala holat structured logda saqlanadi. Background service uchun process exit kodi supervisor siyosatiga ta’sir qiladi: ayrim kodlar restartni, configuration xatosi esa operator aralashuvini talab qiladi. Kubernetes kabi muhitlarda liveness probe bilan process exit bir xil signal emas; graceful shutdown avval yangi trafikni to‘xtatib, davom etayotgan ishni yakunlaydi.

Timeout wrapper bolaning kodidan boshqa o‘z kodini qaytarishi mumkin. Monitoring original process holati bilan orchestrator tomonidan berilgan timeout yoki cancel sababini alohida saqlaydi.

Bog‘liq tushunchalar

Process, Parent process, Shell, Standard error, Signal, CI pipeline, Error handling