GNU/Linux >> Belajar Linux >  >> Linux

Apakah Output Dari Perintah `tty` Dan File `/dev/tty` Keduanya Mengacu pada Terminal Pengendali Proses Bash Saat Ini?

  1. Dari man tty

    tty – cetak nama file terminal yang terhubung ke input standar

    $ tty
    /dev/pts/2
    
  2. Dari APUE:

    Secara historis, nama terminal pengontrol di sebagian besar versi Sistem UNIX adalah /dev/tty . POSIX.1 menyediakan fungsi
    runtime
    yang dapat kita panggil untuk menentukan nama terminal
    pengontrol.

    #include <stdio.h>
    char *ctermid(char *ptr);
    
    $ ls -la /dev/tty
    crw-rw-rw- 1 root tty 5, 0 May 26 00:16 /dev/tty
    

Jadi saya bertanya-tanya apakah output dari perintah tty dan file /dev/tty keduanya merujuk ke terminal pengontrol dari proses bash saat ini?

Jika ya, mengapa perintah tty keluaran file budak pseudoterminal /dev/pts/2 , yang berbeda dari /dev/tty ?

Karena emulator terminal lxterminal dan bash shell yang berjalan di dalamnya menggunakan pasangan pseudoterminal, bukan budak pseudoterminal /dev/pts/2 terminal pengendali bash shell?

/dev/tty dan /dev/pts/2 bukan symlink satu sama lain, jadi apakah itu file yang berbeda?

Terima kasih.

Postingan lanjutan apa hubungan antara terminal pengontrol saya saat ini dan `/dev/tty`?

Jawaban yang Diterima:

Perintah tty (1) mengembalikan nama terminal yang terhubung ke input standar. Ini mungkin terminal pengontrol atau mungkin tidak. Proses tersebut bahkan mungkin memiliki terminal pengontrol tetapi tidak tertulis bahwa terminal tersebut harus terhubung ke input standar.

Dari halaman manual POSIX untuk tty (1):

Utilitas tty akan menulis ke keluaran standar nama terminal yang terbuka sebagai masukan standar. Nama yang digunakan harus sama dengan string yang akan dikembalikan oleh ttyname() fungsi yang didefinisikan dalam volume Antarmuka Sistem POSIX.1-2008.

Cobalah sendiri; lari

< /dev/null sh -c 'tty; sleep 10; echo "Done."'

dan tekan Ctrl+C setelah melihat pesan “not a tty” yang ditulis oleh tty karena input standarnya bukan terminal (pseudo-).

Sebaliknya, /dev/tty selalu merupakan sinonim untuk terminal pengontrol suatu proses, asalkan proses tersebut sebenarnya memiliki terminal pengontrol.


Linux
  1. Linux – Mengapa `/dev/ptmx` Dan `/dev/pts/ptmx` Bukan File Perangkat?

  2. Pengalihan Io Dan Perintah Kepala?

  3. Output perintah dialihkan ke file dan terminal

  1. Baca dan tulis data dari mana saja dengan pengalihan di terminal Linux

  2. Cara menangkap sesi terminal dan output dengan perintah skrip Linux

  3. Mengapa Linux harus memiliki `/dev/cdrom` dan `/media/cdrom`?

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

  2. Apa Yang Terjadi Dengan Keluaran Dari Proses Yang Telah Diabaikan Dan Kehilangan Terminalnya?

  3. Apa Hubungan Antara Terminal Pengontrol Saat Ini Dan `/ dev/tty`?