GNU/Linux >> Belajar Linux >  >> Linux

Mengapa /dev/null Merupakan File? Mengapa Fungsinya Tidak Diimplementasikan Sebagai Program Sederhana?

Saya mencoba memahami konsep file khusus di Linux. Namun, memiliki file khusus di /dev tampak sangat konyol ketika fungsinya dapat diimplementasikan oleh beberapa baris dalam C sepengetahuan saya.

Selain itu, Anda dapat menggunakannya dengan cara yang hampir sama, yaitu menyalurkan ke null alih-alih mengarahkan ulang ke /dev/null . Apakah ada alasan khusus untuk menjadikannya sebagai file? Bukankah menjadikannya file menyebabkan banyak masalah lain seperti terlalu banyak program yang mengakses file yang sama?

Jawaban yang Diterima:

Selain manfaat kinerja menggunakan perangkat khusus karakter, manfaat utamanya adalah modularitas . /dev/null dapat digunakan di hampir semua konteks di mana file diharapkan, tidak hanya di pipa shell. Pertimbangkan program yang menerima file sebagai parameter baris perintah.

# We don't care about log output.
$ frobify --log-file=/dev/null

# We are not interested in the compiled binary, just seeing if there are errors.
$ gcc foo.c -o /dev/null  || echo "foo.c does not compile!".

# Easy way to force an empty list of exceptions.
$ start_firewall --exception_list=/dev/null

Ini semua adalah kasus di mana menggunakan program sebagai sumber atau sink akan sangat merepotkan. Bahkan dalam kasus pipa shell, stdout dan stderr dapat diarahkan ke file secara independen, sesuatu yang sulit dilakukan dengan executable sebagai sink:

# Suppress errors, but print output.
$ grep foo * 2>/dev/null

Linux
  1. Bagaimana Linux Menangani Beberapa Pemisah Jalur Berturut-turut (/home////username///file)?

  2. Linux:Perbedaan Antara /dev/console , /dev/tty Dan /dev/tty0?

  3. Kapan Menggunakan /dev/random Vs /dev/urandom?

  1. Bagaimana Membungkam Sepenuhnya Cronjob Ke /dev/null/?

  2. Apa itu file /dev/zero dan /dev/null di Linux?

  3. Cara menjalankan file sh dari file sh lain

  1. Mengapa saya bisa memindahkan sesuatu ke /dev/null meskipun itu adalah perangkat semu yang diwakili oleh file?

  2. DD dari /dev/zero ke /dev/null...apa yang sebenarnya terjadi

  3. Buat perangkat blok virtual yang menulis ke /dev/null