origin:
和我們的需求一樣,我們是如果使用者想把串列埠作為console的話,那麼在系統啟動的時候,輸入回車來開啟console,否則就作為普通的串列埠用。
1, 在核心驅動裡,不要將串列埠初始化為console, 如我的:
uclinux-l200v40/linux-2.4.x/drivers/char/tty_io.c
// #ifdef config_serial_winbond_console
#if 0
winbond_console_init();
#endif
或者在make menuconfig的時候配置,不要將ttys0設定為console;
2, 在核心啟動,進入busybox時,在/etc/inittab中不要設定串列埠登入:
# activate watchdog and logging
#ttys0::respawn:/sbin/getty -l ttys0 115200 linux
3, 設定啟動指令碼/etc/init.d/s02cmd.sh
#!/bin/sh
/usr/sbin/cmd -d 3
exit 0
其中/usr/sbin/cmd為我們從串列埠接收資料的c程式,這個程式在啟動時監聽串列埠,在1s內,如使用者按了回車鍵,那麼就作console,這個可以使用下面的方法來實現; 否則就做普通串列埠用了。
在cmd這個程式中,如果接收到回車鍵,可以使用system()執行指令碼:/usr/sbin/cmd_getty.sh 來重新啟用console,內容如下:
#!/bin/sh
/sbin/getty -l ttys0 115200 linux &
exit 0
如果使用ssh登入上去,想開啟console,也可以直接使用下面命令來開啟:
/sbin/getty -l ttys0 115200 linux &
如果有更好的方法,可以交流!
謝謝,dglwx,我從網上學習了乙個方法。目前串列埠和終端都可以同時收到到資料,同時在終端中如果輸入ctrl+c程式可以推出,哈哈,很好玩!
void closeconsole(void)
}close(fp); //關閉串列埠0
fp = open("/dev/console",o_rdonly); //恢復console 到串列埠0
ioctl(fp,tioccons);
close(fp);
printf("change2\n"
}
把普通表改為Partition表
exec dbms redefinition.can redef table qa2 atgcore mf ngp user site dbms redefinition.cons use pk create table qa2 atgcore mf.ngp user site new user i...
將普通表改為分割槽表
oracle的普通表沒有辦法通過修改屬性的方式直接轉化為分割槽表,必須通過重建的方式進行轉變,下面介紹三種效率比較高的方法,並說明它們各自的特點。方法一 利用原表重建分割槽表。步驟 sql create table t id number primary key,time date 表已建立。sql...
Oracle 將普通字段型別改為Clob型別的方法
第一步 新增乙個clob型別的字段 alter table nlphistory pat add answer bak clob 第二部 將原來欄位的值拷貝到新建的clob欄位 update nlphistory pat set answer bak answer 第三步 刪除原來的字段 alter...