buffer dapat meminimalkan panggilan-panggilan yang dilakukan. I/O tanpa buffer biasanya digunakan ketika hanya membaca atau menulis data biner dalam jumlah besar ketika kendali langsung dari piranti atau sebuah file dibutuhkan. Kembali pada penjepit kertas seperti dicontohkan diatas, jika seseorang menggambil benda kecil seperti penjepit tersebut, tentunya oran tersebut tidak akan menemui kesulitan menggunakan tangan kiri sebagai penahan/penampung sementara. Tetapi jika seseorang menambil bola meriam yam mana bendanya lebih besar ddibandingkan penampungnya maka kasus seperti ini tidak menggunakan buffer. Sebuah open system, pemanggilan digunakan untuk membuka file tanpa buffer. Sebuah definisi makro digunakan dengan cara memanggil dari system yang berbeda. Sebagai contoh bekerja pada dua system yang berbeda seperti pada system operasi UNIX dan MS-DOS/windows. Dalam kasus tersebut maka sebuah kondisi compilasi (#ifdef/#endif) digunakan untuk memperbaiki file tersebut seperti contoh program dibawah ini:
#include<sys/types.h> #include<sys/stat.h> #include<fcntl.h> #ifdef__MSDOS__//jikabekerjapadaMS‐DOS #include<io.h>//memanggilincludefilei/opadaMS‐DOS #else/*__MSDOS__*/ #include<unistd.h> //memanggilincludefilei/opadaUNIX #endif/*__MSDOS__*/ Sebuah perintah atau sintak untuk membuka akan memanggil: intfile_descriptor=open(name,flags);//fileyangsudahada file_descriptor=open(name,flags,mode);//filebaru
dimana, file_descriptor merupakan integer yang digunakan untuk mengidentifikasikan file untuk dibaca, ditulis atau ditutup pemanggilannya. Jika file_descriptor kurang dari 0 berarti kesalahan telah terjadi. Name merupakan nama file. Flag merupakan definisi dalam file header fcntl.h, dimana flag tersebut dijelaskan dalam table dibawah. Sedangkan mode adalah mode proteksi file dimana mode ini biasanya 0644.
Tabel 12.6. Open flag
FLAG ARTI O_RDONLYOpenforreadingonly. O_WRONLY Openforwritingonly. O_RDWROpenforreadingandwriting. O_APPENDAppendnewdataattheendofthefile. O_CREATCreate file (the file mode parameter required when this flag is present). O_TRUNCIfthefileexists,truncateitto0length. O_EXCLFailiffileexists. O_BINARYOpeninbinarymode(olderUnixsystemsmaynothavethisflag).
Sebagai contoh pada saat operasi membuka file dengan nama file data.txt dalam mode pembacaan text, maka potongan program yang dituliskan adalah sebagai berikut:
data_fd=open("data.txt",O_RDONLY);
selain contoh diatas, bagaimana untuk membuat sebuah file output.dat dapat ditulis, maka potongan program adalah sebagai berikut:
out_fd=open("output.dat", O_CREAT|O_WRONLY,0666);
Pada sintak tersebut diatas menggunakan operator OR ( | ) yang artinya merupakan pengabungan flag yang melebihi dari satu, untuk mempermudah dan mempercepat penulisan ketika beberapa program telah berjalan pada awal, dan tiga file sudah terbuka, dimana hal tersebut dapat dideskrisikan pada table dibawah ini:
Tabel 12.7. Standar file tidak terbuffer
NOMOR FILE PENJELASAN 0Standardin 1Standardout 2Standarderror Format dari pemanggilan read adalah:
read_size = read(file_descriptor, buffer, size);
dimana: read_size, merupakan jumlah actual dari byte yang dibaca, 0 mengindikasikan akhir file dan bilangan negative mengindikasikan adanya kesalahan dalam file. File_descriptor, merupakan sebuah file yang mendeskripsikan dari file yang dibuka, buffer merupakan sebuah pointer untuk menempatkan dan meletakan data yang dibaca dari file. Size merupakan ukuran data yang dibaca. Hal ini merupakan ukuran dari file yang diminta. Pada jumlah sebenarnya dari byte yang dibaca mungkin lebih.
Next read halaman 12.