在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            關 閉

            新聞中心

            EEPW首頁 > 工控自動化 > 設計應用 > 基于Linux內(nèi)核的鍵盤模擬實現(xiàn)

            基于Linux內(nèi)核的鍵盤模擬實現(xiàn)

            作者: 時間:2012-08-17 來源:網(wǎng)絡 收藏

            底層tty驅動調(diào)用receive_buf()這個函數(shù)用來發(fā)送硬件設備接收處理的字符。參見/usr/src/linux/drivers/char/n_tty.c:

            本文引用地址:http://www.biyoush.com/article/202221.htm

            static void n_tty_receive_buf(struct tty_struct *tty, const

            unsigned char *cp, char *fp, int count)

            參數(shù)cp是一個指向設備接收的輸入字符的buffer的指針。參數(shù)fp是一個指向一個標記字節(jié)指針的指針。在具體的實現(xiàn)中,先保存原始的tty receive_buf()函數(shù),然后重置ldisc.receive_buf到自定義的new_receive_buf()函數(shù)來記錄用戶的輸入。

            例如:要記錄在終端tty1設備上的輸入。

            int fd = open(/dev/tty1, O_RDONLY, 0);

            struct file *file = fget(fd);

            struct tty_struct *tty = file->private_data;

            //保存原始的receive_buf()函數(shù)

            old_receive_buf = tty->ldisc.receive_buf;

            //替換成新的new_receive_buf函數(shù)

            tty->ldisc.receive_buf = new_receive_buf;

            //新的new_receive_buf函數(shù)

            void new_receive_buf(struct tty_struct *tty, const unsigned char *cp, char *fp, int count)

            {

            logging(tty, cp, count);

            //紀錄用戶擊鍵

            /* 調(diào)用回原來的receive_buf */

            (*old_receive_buf)(tty, cp, fp, count);

            }

            4.4 tty_read函數(shù)

            當一個進程需要通過sys_read()函數(shù)來讀取一個tty終端的輸入字符時,tty_read函數(shù)就會被調(diào)用。參見文件/usr/src/linux/drives/char/tty_io.c:

            static ssize_t tty_read(struct file * file, char * buf, size_t count,

            loff_t *ppos)

            5 結束語

            目前,利用勾子函數(shù)實現(xiàn)基于的這種方法使用非常靈活,同時也可以跨平臺進行移植,可通過tty和pts來記錄下本地和遠程會話的所有擊鍵動作,并且也支持一些特殊的按鍵。當然,要使更靈活,下一步還需要更多的改進,例如增加多種不同日志記錄模式的支持等。

            更多計算機與外設信息請關注21ic計算機與外設頻道

            linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)

            DIY機械鍵盤相關社區(qū):機械鍵盤DIY


            linux相關文章:linux教程



            上一頁 1 2 下一頁

            評論


            相關推薦

            技術專區(qū)

            關閉