GNU/Linux >> Belajar Linux >  >> Linux

Bagaimana Linux menggunakan /dev/tty dan /dev/tty0

/dev/tty adalah tty pengendali dari proses saat ini , untuk setiap proses yang benar-benar membuka file khusus ini. Itu belum tentu perangkat konsol virtual (/dev/tty n ), dan bisa berupa pty, port serial, dll. Jika tty yang mengontrol bukan konsol virtual, maka prosesnya tidak harus berinteraksi dengan perangkat konsol meskipun pseudottynya benar-benar diterapkan di konsol sistem. Misalnya untuk shell di emulator terminal di bawah Xserver yang berjalan secara lokal, program tersebut membentuk rantai interaksi seperti:

Cangkang Unix
/dev/pts/2 (≡ /dev/tty untuk prosesnya)
driver kernel pty
/dev/ptmx
emulator terminal
⇕ Protokol X Window
server X
/dev/tty7 (≡ /dev/tty untuk server)
konsol sistem
z x c ↿⇂[_̈░░]
pengguna

Penggunaan /dev/tty oleh program userland meliputi:

  • Tulis sesuatu ke terminal pengontrol, abaikan semua pengalihan dan pipa;
  • Buat ioctl() – lihat tty_ioctl(4);
  • Misalnya, lepaskan dari terminal (TIOCNOTTY).

/dev/tty0 adalah konsol virtual sistem operasi yang saat ini aktif (terlihat di monitor). . File khusus ini tidak mungkin digunakan secara signifikan oleh perangkat lunak sistem, tetapi /dev/console sebenarnya adalah “alias” untuk tty0 dan /dev/console banyak digunakan oleh daemon syslog dan, terkadang, oleh kernel itu sendiri.

Eksperimen untuk menunjukkan perbedaannya:jalankan root shell pada tty3 (Ctrl +Alt +F3 ) atau di emulator terminal. Sekarang

# sleep 2; echo test >/dev/tty

lalu dengan cepat Ctrl +Alt +F2 , tunggu selama dua detik, dan Ctrl +Alt + apapun kembali. Di mana Anda melihat outputnya?
Dan sekarang tes yang sama untuk /dev/tty0 .


/dev/tty adalah tty pengendali untuk setiap proses. Ini mungkin cangkang Anda.

Jika proses Anda tidak memiliki tty pengontrol, /dev/tty tidak tersedia, mis. berlaku untuk daemon.

Jika proses Anda memiliki tty pengontrol, maka /dev/tty adalah alias driver untuk driver tty sebenarnya yang digunakan proses Anda untuk stdin, stdout, atau stderr.

Lihat man -s7d tty untuk informasi lebih lanjut. Perhatikan bahwa bagian di mana manual ini berada mungkin berbeda antara OS yang berbeda dan jangan bingung dengan halaman manual di bagian 1. Jadi, periksa mis. man -k tty .


Linux
  1. Bagaimana cara mengganti harddisk yang gagal di RAID perangkat lunak Linux

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

  3. Seberapa Portabel /dev/stdin, /dev/stdout Dan /dev/stderr?

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

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

  3. gema atau cetak /dev/stdin /dev/stdout /dev/stderr

  1. Cara membuat kata sandi acak di linux menggunakan /dev/random

  2. Mengapa < atau > diperlukan untuk menggunakan /dev/tcp

  3. Perbedaan antara /dev/sda dan /dev/sda1