日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > linux >内容正文

linux

linux关机重启机器人,Linux Stopped (tty output) 问题

發(fā)布時(shí)間:2024/3/12 linux 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 linux关机重启机器人,Linux Stopped (tty output) 问题 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

在Linux下便遇到一個(gè)問題,讓進(jìn)程使用& 在后臺(tái)運(yùn)行時(shí),輸入enter,會(huì)導(dǎo)致 tty stopped 導(dǎo)致程序不能進(jìn)行。

因?yàn)樵谠撨M(jìn)程有用到串口的讀取和發(fā)送了,tty串口的讀寫功能喪失。

后來 將?SIGTTOU 忽略掉,signal(SIGTTOU, SIG_IGN);

結(jié)果發(fā)現(xiàn)不再提示? tty stopped了 ,但是tty串口功能仍舊不能使用。

tty stopped的根本原因是因?yàn)樵诖谠谑褂卯?dāng)中用到了終端輸出功能,然后再?gòu)慕K端讀取數(shù)據(jù),如果忽略掉,在實(shí)際用用中 ,進(jìn)入后臺(tái)后,

終端的輸入輸出將會(huì)受到一定的影響,所以還要檢查串口的配置問題。

最后發(fā)現(xiàn)在串口的配置如下

{

int fd = -1;

int iRet;

int iFd;

struct termios options;

struct serial_struct serial;

/* Start: If need, to modify uart dcb config */

ST_UARTDCB dcb = {

.flowctrl = FC_NONE,//none flow control

.databit = DB_CS8,//databit: 8

.stopbit = SB_1,//stopbit: 1

.parity = PB_NONE,//parity check: none

.baudrate = B_460800//baudrate: 115200

};

if (460800 == baudrate)

dcb.baudrate = B_460800;

fd = Ql_UART_Open(dev_name, baudrate, O_RDWR |FC_NONE|O_NONBLOCK );

DEBUG(LOG_DEBUG,"%s open(\"%s\", %d) = %d\n", PROCESS_NAME, MAIN_UART_DEV, baudrate, fd);

/* if need, to modify uart dcb config */

iRet = Ql_UART_SetDCB(fd, &dcb);

//DEBUG(LOG_DEBUG,"SET DCB ret: %d\n", iRet);

iRet = Ql_UART_GetDCB(fd, &dcb);

DEBUG(LOG_DEBUG,"%s GET DCB ret: %d: baudrate: %d, flowctrl: %d, databit: %d, stopbit: %d, paritybit: %d\n",

PROCESS_NAME, iRet, dcb.baudrate, dcb.flowctrl, dcb.databit, dcb.stopbit, dcb.parity);

#if 0

Ql_UART_IoCtl(fd, TIOCGSERIAL, &serial);

serial.xmit_fifo_size = FIFO_SIZE; // what is "xmit" ??

Ql_UART_IoCtl(fd, TIOCSSERIAL, &serial);

tcgetattr(iFd, &options);

/*

* 'DATA_LEN' bytes can be read by serial

*/

options.c_cc[VMIN]? ?=? ?4096;

options.c_cc[VTIME]? =? ?10;

tcflush(fd, TCIFLUSH);

if (tcsetattr(iFd,? ?TCSANOW,? ?&options)<0)

return? ?-1;

#endif

return fd;

}

將黃色的內(nèi)容屏蔽掉后測(cè)試恢復(fù)正常,黃色的內(nèi)容是我本來要加大串口的發(fā)送和接收的buf緩存以增大每次接收和發(fā)送的字節(jié)buff ,但經(jīng)過實(shí)際測(cè)試,根本沒

有個(gè)鳥用,所以還是將這段內(nèi)容屏蔽掉。

總結(jié)

以上是生活随笔為你收集整理的linux关机重启机器人,Linux Stopped (tty output) 问题的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。