Belajar Pemrograman C: setvbuf()

Mengapa menggunakan fungsi setvbuf()?

Fungsi setvbuf() sangat berguna ketika kita ingin mengubah kebiasaan buffering dalam program. Umumnya program yang berjalan tidak menggunakan buffering, namun apa yang terjadi jika kita mempunyai buffer yang amat sangat besar dan kita ingin menyimpannya dalam device penyimpanan kita seperti harddisk? Disini buffering sangat diperlukan.

Ada dua mode buffering yang disediakan yaitu Full Buffering (FB) dan Line Buffering (LB). Perbedaan keduanya terletak pada pengisian buffer. FB siap mengeluarkan output jika buffer sudah terisi penuh. Sedangkan LB siap mengeluarkan output jika buffer berisi karakter “\n”.

Contoh 1

Program dibawah ini akan membuat file 8.txt. File tersebut akan ditulis dengan buffer A dan B. Untuk buffering, kita gunakan 4 byte saja dan kita paksa dengan fflush agar output bisa menjadi baik.

#include "stdio.h"

main ()
{
	FILE *pFile;
	pFile=fopen ("8.txt","w");
	setvbuf (pFile , NULL , _IOFBF , 4);
	
	printf("Menulis A\n");
	fprintf(pFile, "AAAA");
	fflush( pFile );
	sleep(3);
	
	printf("Menulis B\n");
	fprintf(pFile, "BBBB");
	fflush( pFile );
	sleep(2);
	
	fclose (pFile);
	return 0;
}

Output

$ gcc setvbuf.c && time ./a.out
Menulis A
Menulis B
./a.out  0,00s user 0,00s system 0% cpu 5,002 total
$ cat 8.txt
AAAABBBB

Keep Fun Coding 😀

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s