Unix / Linux - Standard I/O Streams
Hai there, bakal pelajar Linux masa depan! Hari ini, kita akan melihat dunia yang penuh magi Standard I/O Streams di Unix dan Linux. Jangan bimbang jika anda baru dalam bidang programming - saya akan menjadi pandu yang ramah bagi anda dalam pengembaraan ini, seperti yang telah saya lakukan untuk banyak murid selama tahun-tahun pengajaran saya. Jadi, ambil beg virtual anda, dan mari kita jelajah!
Apa Itu Standard I/O Streams?
Sebelum kita masuk ke dalam hal yang berbelit-belit, mari kita mengerti apa itu Standard I/O Streams. Ber fikirkan mereka seperti saluran khas melalui mana program anda dapat berkomunikasi dengan dunia luar. Seperti bagaimana manusia kita memiliki banyak cara untuk berinteraksi - berbicara, mendengar, dan kadang-kadang menjerit jika ada masalah - program kita juga memiliki stream ini.
Ada tiga stream utama:
- Standard Input (stdin)
- Standard Output (stdout)
- Standard Error (stderr)
Mari kitaongkikan satu per satu.
Standard Input (stdin)
Standard Input, sering disingkat sebagai stdin, seperti telinga program. Itu cara program mendengar informasi dari pengguna atau sumber lain.
Contoh 1: Membaca dari stdin
#include <stdio.h>
int main() {
char name[50];
printf(" apa namamu? ");
scanf("%s", name);
printf("Hai, %s!\n", name);
return 0;
}
Dalam contoh ini, scanf
membaca dari stdin. Ketika anda menjalankan program ini, ia menunggu anda mengetik sesuatu dan menekan Enter. Itu stdin dalam aksi!
Standard Output (stdout)
Standard Output, atau stdout, seperti mulut program. Itu cara program berbicara kepada kita, menunjukkan hasil atau pesan.
Contoh 2: Menulis ke stdout
#include <stdio.h>
int main() {
printf("Hai, Dunia!\n");
fprintf(stdout, "Ini juga ditulis ke stdout.\n");
return 0;
}
Kedua printf
dan fprintf(stdout, ...)
menulis ke stdout. Ketika anda menjalankan program ini, anda akan melihat kedua pesan dicetak ke terminal.
Standard Error (stderr)
Standard Error, atau stderr, seperti cara program menjerit jika ada sesuatu yang salah. Itu digunakan untuk pesan kesalahan dan diagnostik.
Contoh 3: Menggunakan stderr
#include <stdio.h>
int main() {
FILE *file = fopen("tidak_ada.txt", "r");
if (file == NULL) {
fprintf(stderr, "Kesalahan: Tidak dapat membuka file!\n");
return 1;
}
// Sisa kode...
return 0;
}
Di sini, jika file tidak ada, kita menggunakan fprintf(stderr, ...)
untuk mencetak pesan kesalahan.
Mengarahkan Stream
Sekarang, mari kita lihat bagaimana ini menjadi sangat menarik! Dalam Unix/Linux, kita dapat mengarahkan stream ini. Itu seperti memberikan program kita telinga atau mulut yang berbeda. Biarkan saya menunjukkan kepada anda bagaimana:
Mengarahkan stdin
$ ./program < input.txt
Ini mengambil input dari input.txt
bukannya dari papan ketik.
Mengarahkan stdout
$ ./program > output.txt
Ini mengirim output ke output.txt
bukannya ke layar.
Mengarahkan stderr
$ ./program 2> error.txt
Ini mengirim pesan kesalahan ke error.txt
.
Pipa: Menghubungkan Program
Ada trik yang menarik: kita dapat menghubungkan output dari satu program ke input program lain menggunakan pipa (|
). Itu seperti program sedang bermain permainan telepon!
$ echo "Hai, Dunia!" | wc -w
Ini menghitung kata-kata dalam "Hai, Dunia!". Output dari echo
menjadi input wc
.
Fungsi Standard I/O
Mari kita lihat beberapa fungsi umum yang digunakan dengan stream ini:
Fungsi | Deskripsi | Stream |
---|---|---|
scanf | Baca input format | stdin |
printf | Tulis output format | stdout |
fprintf | Tulis output format ke stream | Mana-mana |
fgets | Baca string | Mana-mana |
fputs | Tulis string | Mana-mana |
fread | Baca data biner | Mana-mana |
fwrite | Tulis data biner | Mana-mana |
Anekdot Pribadi
Saya ingat saat saya pertama kali mengajarkan konsep ini, seorang murid bertanya, "Tapi,教授, mengapa kita perlu stream yang berbeda? Bisakah kita hanya gunakan satu untuk semua?" Saya tersenyum dan katakan, "Imajinilah anda di restoran yang keras. Anda berbicara untuk memesan makanan, mendengar saat pesanan anda siap, dan anda mungkin menjerit jika ada masalah dengan pesanan anda. Itu mengapa kita memiliki stream yang berbeda - setiap satunya memiliki tujuannya sendiri!"
Kesimpulan
Mengerti Standard I/O Streams seperti belajar ABC komunikasi program. Itu dasar bagi konsep yang lebih lanjut yang anda akan temui dalam perjalanan programming anda. Ingat, setiap programmer yang hebat mulai dari tempat anda sekarang. Terus latih, tetap bersemangat, dan segera anda akan berstream data seperti seorang ahli!
Selamat coding, bakal bintang teknologi! ?
Credits: Image by storyset