日期:2014-05-16  浏览次数:21040 次

linux 终端下敲ctrl-c时,到底发生了什么?
通过telnet登录到单板,然后按ctrl-c会发生什么情况,流程是怎么样的?

在分析之前,先介绍tty的相关知识。
我们可以认为,所有跟输入输出相关的操作,最终都由tty来接管。
举例来说,当我们敲 ls /dev时得到
[root@ dev]# ls /dev
autofs           fb     loop0  lp3                 oldmem  sda1        snapshot  tty12  tty22  
tty32  tty42  tty52  tty62    usbmon1
block            fb0    loop1  MAKEDEV             port    sda2        snd       tty13  tty23  
tty33  tty43  tty53  tty63    usbmon2
bsg              fd     loop2  mapper              ppp     sda3        stderr    tty14  tty24  
tty34  tty44  tty54  tty7     usbmon3
bus              full   loop3  mcelog              ptmx    sda4        stdin     tty15  tty25  
tty35  tty45  tty55  tty8     usbmon4
char             fuse   loop4  megadev0            pts     sda5        stdout    tty16  tty26  
tty36  tty46  tty56  tty9     usbmon5
console          hpet   loop5  mem                 random  sda6        systty    tty17  tty27  
tty37  tty47  tty57  ttyS0    vcs
core             hvc0   loop6  net                 rfkill  sequencer   tty       tty18  tty28  
tty38  tty48  tty58  ttyS1    vcs1
cpu              input  loop7  network_latency     root    sequencer2  tty0      tty19  tty29  
tty39  tty49  tty59  ttyS2    vcsa
cpu_dma_latency  kmem   lp0    network_throughput  rtc     sg0         tty1      tty2   tty3   
tty4   tty5   tty6   ttyS3    vcsa1
disk             kmsg   lp1    null                rtc0    sg1         tty10     tty20  tty30  
tty40  tty50  tty60  urandom  vga_arbiter
dri              log    lp2    nvram               sda     shm         tty11     tty21  tty31  
tty41  tty51  tty61  usbmon0  zero
[root@ dev]#


另外还可以通过 /proc/tty/drivers得到tty相关驱动信息
[root@ dev]# cat /proc/tty/drivers 
/dev/tty             /dev/tty        5       0 system:/dev/tty
/dev/console         /dev/console    5       1 system:console
/dev/ptmx            /dev/ptmx       5       2 system
/dev/vc/0            /dev/vc/0       4       0 system:vtmaster
serial               /dev/ttyS &nb