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!

Unix / Linux - Standard I/O Streams

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:

  1. Masukan Standar (stdin)
  2. Keluaran Standar (stdout)
  3. 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