SORU
19 Temmuz 2015, Pazar


Çıkış kullanmalıyız() C?

C exit kullanma hakkında question var . Cevap anlatılır değil iyi fikir özellikle DEMİRYOLU, örneğin, eğer exit denilen bir yerde kod, yıkıcı nesneler olmayacak denir, dolayısıyla, yaşanabilir bir veri olduğunu bekleyerek yazılı dosya olmaz olsun yazılı için örnek (eğer yıkıcı olduğu anlamına geliyordu yaz verileri).

İlgimi çekti nasıl C. Bu durum benzer sorunlar da C içinde geçerlidir. C durumu Çok mu C exit kullanmak için ok C. farklı olabilir/kurucular kullanmıyoruz beri sanıyordum.

Gördüm gibi işlevleri aşağıda, hangi buluyorum iyi kullanın bazı durumlarda, ama ilgilenen varsa benzer sorunlar C ile kullanarak exit gibi yukarıda (hangi makyaj kullanarak bu fonksiyonları iyi bir fikir değil).

void die(const char *message)
{
    if(errno) {
        perror(message);
    } else {
        printf("ERROR: %s\n", message);
    }

    exit(1);
}

CEVAP
19 Temmuz 2015, Pazar


abort() C exit() işlevi bir çıkış. zarif olarak kabul edilir yerine

(N1570) 7.22.4.4/p2 C11Çıkış fonksiyonu(vurgu benim):

exit işlevi neden olurnormalprogram sonlanması ortaya.

Standart ayrıca 7.22.4.4/p4 diyor ki:

Sonra tüm açık akışıyazılı olmayan tamponlanmış veri temizlenditüm açık akarsu vardırkapalıve tüm oluşturulan dosyaları tmpfile işlevi tarafından kaldırılır.

Ayrıca değer 7.21.3/p5 bakıyorDosyaları:

main Bu işlev, orijinal çağırana döndürür, veya exiteğer fonksiyon deniraçık olan tüm dosyalar kapatılır(dolayısıyla tüm çıkış dere temizlendi) program sonlanması önce. Diğer yollara program sonlanması, abort işlevini çağıran gibi, gerek yok tüm dosyaları düzgün bir şekilde kapatın.

Ancak, açıklamalar aşağıda belirtildiği gibi diğer bütün kapak olacağını kabul edemeyizkaynakatexit() çare ve geri tanımlamanız gerekebilir yani , onlar için ayrı ayrı. bırakın Aslında atexit() 7.22.4.2/p2 yazıyor gibi yapmak için tasarlanmıştır tam olarak ne olduğunuAtexit işlevi:

atexit işlev işlevi func ile işaret kaydeder normal program sonlanması de bağımsız olarak.

Özellikle, C standart nesneler için ne gerektiğini tam olarak söylemiyorayrılan depolama süresi(yani malloc()), böylece nasıl yapıldığını farkında olmak gerektiren özel uygulama. Modern, bilgisayar odaklı bir işletim sistemi ki bu sistem çaresine bakar, ama yine de isteyebilirsiniz kolu bu kendiniz için sessizlik bellek hata gibi Valgrind.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:
C

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • cyriak

    cyriak

    29 Mart 2006
  • grickle

    grickle

    22 AĞUSTOS 2006
  • Mismag822 - The Card Trick Teacher

    Mismag822 -

    18 EKİM 2008