Unix / Linux - Standard I/O Streams
Hai sana, para ahli Linux masa depan! Hari ini, kita akan meluncur ke dalam dunia magis Aliran I/O Standar di Unix dan Linux. Jangan khawatir jika Anda baru dalam pemrograman - saya akan menjadi panduan yang ramah bagi Anda dalam perjalanan ini, sama seperti yang saya lakukan untuk ribuan murid selama tahun-tahun mengajar saya. Jadi, ambil tas virtual Anda, dan mari kita jelajahi!
Apa Itu Aliran I/O Standar?
Sebelum kita masuk ke detilnya, mari kita mengerti apa itu Aliran I/O Standar. Pikirkan mereka sebagai kanal khusus melalui mana program Anda bisa berkomunikasi dengan dunia luar. Seperti halnya manusia memiliki berbagai cara untuk berinteraksi - berbicara, mendengar, dan kadang-kadang menjerit jika ada masalah - program kita memiliki aliran ini.
Ada tiga aliran utama:
- Masukan Standar (stdin)
- Keluaran Standar (stdout)
- Kesalahan Standar (stderr)
mari kitauraikan satu per satu.
Masukan Standar (stdin)
Masukan Standar, sering disingkat menjadi stdin, seperti ears program. Itu bagaimana program mendengarkan informasi dari pengguna atau sumber lain.
Contoh 1: Membaca dari stdin
#include <stdio.h>
int main() {
char name[50];
printf("Siapa 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!
Keluaran Standar (stdout)
Keluaran Standar, atau stdout, seperti mulut program. Itu bagaimana 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 akan 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.
Kesalahan Standar (stderr)
Kesalahan Standar, atau stderr, seperti cara program menjerit saat ada masalah. Itu digunakan untuk pesan kesalahan dan diagnosa.
Contoh 3: Menggunakan stderr
#include <stdio.h>
int main() {
FILE *file = fopen("tidakada.txt", "r");
if (file == NULL) {
fprintf(stderr, "Error: 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.
Redirecting Streams
Sekarang, mari kita lihat yang benar-benar menarik! Di Unix/Linux, kita dapat mengalihkan aliran ini. Itu seperti memberikan program kita ears atau mulut yang berbeda. Mari saya tunjukkan kepada Anda bagaimana:
Mengalihkan stdin
$ ./program < input.txt
Ini mengambil masukan dari input.txt
bukannya dari papan ketik.
Mengalihkan stdout
$ ./program > output.txt
Ini mengirimkan output ke output.txt
bukannya ke layar.
Mengalihkan stderr
$ ./program 2> error.txt
Ini mengirimkan pesan kesalahan ke error.txt
.
Pipes: Menghubungkan Program
Ini adalah trik menarik: kita dapat menghubungkan output dari satu program ke input program lain menggunakan pipa (|
). Itu seperti program bermain permainan telepon!
$ echo "Hai, Dunia!" | wc -w
Ini menghitung kata-kata dalam "Hai, Dunia!". Output echo
menjadi input wc
.
Fungsi Standar I/O
Bersama-sama lihat beberapa fungsi umum yang digunakan dengan aliran ini:
Fungsi | Deskripsi | Aliran |
---|---|---|
scanf | Baca input format | stdin |
printf | Tulis output format | stdout |
fprintf | Tulis output format ke aliran | 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 pertama saya mengajarkan konsep ini, seorang murid bertanya, "Tapi, pak, mengapa kita butuh aliran yang berbeda? Bisakah kita hanya gunakan satu untuk semua?" Saya tersenyum dan katakan, "Bayangkan 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 aliran berbeda - setiap aliran memiliki tujuannya sendiri!"
Kesimpulan
Mengerti Aliran I/O Standar seperti belajar ABC komunikasi program. Itu dasar untuk konsep yang lebih maju yang Anda akan temui dalam perjalanan pemrograman Anda. Ingat, setiap pemrogramer hebat mulai di tempat Anda sekarang. Terus latih, tetap curiga, dan segera Anda akan berstream data seperti seorang ahli!
Selamat coding, bintang teknologi masa depan! ?
Credits: Image by storyset