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!

Unix / Linux - Standard I/O Streams

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:

  1. Standard Input (stdin)
  2. Standard Output (stdout)
  3. 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