Lompat ke konten Lompat ke sidebar Lompat ke footer

Fungsi EXIT, ABORT, dan ASSERT Bahasa C

Pada artikel ini akan dijelaskan bagaimana penggunaan fungsi exit(), abort(), dan assert() pada bahasa Pemrograman C.

Fungsi EXIT, ABORT, dan ASSERT Bahasa C
Fungsi Exit, Abort, dan Assert Bahasa C

Sebelum memahami lebih dalam materi tentang Fungsi EXIT, ABORT, dan ASSERT Bahasa C, terlebih dahulu pelajari materi tentang: Fungsi Static Bahasa C dan Penjelasannya [klik], Peran Fungsi Prototype Bahasa C Beserta Penjelasannya [klik], dan Pengembalian Nilai Fungsi Ganda Bahasa C [klik].

Fungsi EXIT

Sintak: void exit ( int status );

Fungsi exit() bertugas untuk mematikan proses program yang sedang berjalan secara normal.

Baca Juga:

Status value dari fungsi exit() akan mengembalikan nilai ke parent proses. Secara umum, sebuah value status dari 0 atau EXIT_SUCCESS mengindikasikan bahwa proses berhasil, dan nilai lainnya atau konstanta EXIT_FAILURE digunakan untuk mengindikasikan error

Performa dari fungsi exit() diperlihatkan pada beberapa bentuk operasi sebagai beirkut:
  • Mengeluarkan data buffer yang tidak dibaca.
  • Menutup semua file yang sedang dibuka pada program.
  • Menghapus file sementara.
  • Mengembalikan nilai status integer exit ke sistem operasi.

Pada standar C, fungsi atexit() dapat digunakan untuk melakukan konstumisasi fungsi exit() untuk menampilkan aksi penambahan pada proses mematikan program.

Contoh: Penggunaan fungsi exit.

/* exit example */

#include <stdio.h>

#include <stdlib.h>


int main ()

{


FILE * pFile;


pFile = fopen ("myfile.txt", "r");


if (pFile == NULL)

{

printf ("Error opening file");

exit (1);

}


else

{

/* file operations here */

}


return 0;

}


Ketika fungsi exit() dipanggil, setipa deskripsi file yang menjadi milik program proses akan ditutup dan setiap children dari proses akan diturunkan oleh proses 1, init, dan proses parent akan dikirim ke bagian sinyal SIGCHLD.

Fungsi exit() hanya mengambil nilai integer args pada rentang nilai 0 sampai dengan 255. Jika nilai exit berada diluar nilai jangkauan tersebut, maka akan mengashilkan kode exit yang tidak terduga. Nilai exit yang lebih besar dari nilai return 255, maka akan mengembalikan inlai kode modul 256. Contoh, exit 9999 memberikan nilai kode dari 15.

Contoh: berikut adalah implementasi bahasa C untuk mengilustrasikan fungsi exit().

#include <stdio.h>

#include <stdlib.h>

#include <unistd.h>

#include <sys/types.h>

#include <sys/wait.h>


int main(void)

{


pid_t pid = fork();


if ( pid == 0 )

{

exit(9999); 

//passing value more than 255

}


int status;

waitpid(pid, &status, 0);


if ( WIFEXITED(status) )

{

int exit_status = WEXITSTATUS(status);

printf("Exit code: %d\n", exit_status);

}


return 0;

}

Output:
Exit code: 15

Catatan: Contoh program tersebut mungkin tidak dapat bekerja secara baik jika menggunakan kompilator online karena fungsi fork() disabled.

Penjelasan: Contoh program sebelumnya akan memberikan efek dari overflow integer 8-bit. Setelah nilai 255 (semua set 8 bits) menjadi 0. Maka nilai output adalah "exit code modulo 256". Nilai output aktual dari modul dengan nilai 9999 dan 256 adalah 15.

Fungsi ABORT

Sintak: void abort ( void );

Tidak seperti fungsi exit(), fungsi abort() tidak menutup semua file yang sedang dibuka pada program, fungsi abort() juga tidak menghapus file sementara dan tidak mengeluarkan stream buffer. Fungsi abort() juga tidak melakukan pemanggilan register melalui fungsi atexit().

Fungsi abort() pada bahasa C berfungsi untuk mematikan proses yang diaktifkan oleh sinyal SIGABRT, dan program yang akan dimatikan juga termasuk sebuah handler ke intercept sinyal ini sendiri.

Contoh: program yang akan mencetak pesan "Makan dan Makan" ke "tempfile.txt".

#include<stdio.h>

#include<stdlib.h>


int main()

{


FILE *fp = fopen("C:\\myfile.txt", "w");


if(fp == NULL)

{

printf("\n could not open file ");

getchar();

exit(1);

}


fprintf(fp, "%s", "Makan dan Makan");


/* ....... */

/* ....... */

/* Something went wrong so terminate here */


abort();


getchar();


return 0;

}


Catatan:
Jika ingin memastikan bahwa data telah dibuat ke dalam file dan buffer telah dikeluarkan, maka gunakan fungsi exit() atau masukkan sebuah sinyal handler untuk SIGABRT.

Fungsi ASSERT

Sintak: void assert( int expression );

Jika sebuah ekspresi dievaluasi menjadi nilai 0 atau false, maka ekspresi pada filename source code, dan baris angka akan dikirim ke standar error, dan fungsi abort() pun akan dipanggil ke program. Jika identifier NDEBUG atau "no debug" telah didefinisikan dengan #define NDEBUG, maka makro assert tidak akan melakukan proses apapun.

Contoh:

#include<assert.h>


void open_record(char *record_name)

{

assert(record_name != NULL);

/* Rest of code */

}


int main(void)

{

open_record(NULL);

}


Artikel ini didedikasikan kepada: Desy Intan Larasati, Doohan Legin, Endah Cahyo Ningrum, Fahrul Irawan, dan Farlian Sanjana.

6 komentar untuk "Fungsi EXIT, ABORT, dan ASSERT Bahasa C"

  1. Apa yang dimaksud dengan fungsi EXIT pada bahasa C?

    BalasHapus
    Balasan
    1. Fungsi EXIT pada bahasa C merupakan fungsi yang digunakan untuk menghentikan pemanggilan proses atau fungsi secara langsung di dalam program. Fungsi ini bertugas untuk mengakhiri setiap proses yang terjadi dalam suatu program.

      Hapus
  2. Apa yang dimaksud dengan fungsi ABORT pada Bahasa C?

    BalasHapus
    Balasan
    1. Fungsi abort() pada bahasa C merupakan pustaka C yang digunakan untuk membawa keluar program tempat fungsi tersebut dipanggil dalam suatu program melalui sinyal SIGABRT yang akan mengharahkan pada proses penghentian program yang sedang dieksekusi saat ini.

      Hapus
  3. Apa yang dimaksud dengan fungsi Assert pada Bahasa C?

    BalasHapus
    Balasan
    1. Fungsi assert pada Bahasa C memungkinkan informasi diagnostik yang ditulis ke file error standar, yang digunakan untuk menambahkan diagnostik ke program bahasa C.

      Hapus

Hubungi admin melalui Wa : +62-896-2414-6106

Respon komentar 7 x 24 jam, mohon bersabar jika komentar tidak langsung dipublikasi atau mendapatkan balasan secara langsung.

Bantu admin meningkatkan kualitas blog dengan melaporkan berbagai permasalahan seperti typo, link bermasalah, dan lain sebagainya melalui kolom komentar.

- Ikatlah Ilmu dengan Memostingkannya -
- Big things start from small things -