在Linux下便遇到一个问题,让进程使用& 在后台运行时,输入enter,会导致 tty stopped 导致程序不能进行。

因为在该进程有用到串口的读取和发送了,tty串口的读写功能丧失。

后来 将 SIGTTOU 忽略掉,signal(SIGTTOU, SIG_IGN);

结果发现不再提示  tty stopped了 ,但是tty串口功能仍旧不能使用。

tty stopped的根本原因是因为在串口在使用当中用到了终端输出功能,然后再从终端读取数据,如果忽略掉,在实际用用中 ,进入后台后,

终端的输入输出将会受到一定的影响,所以还要检查串口的配置问题。

最后发现在串口的配置如下

{

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;

}

将黄色的内容屏蔽掉后测试恢复正常,黄色的内容是我本来要加大串口的发送和接收的buf缓存以增大每次接收和发送的字节buff ,但经过实际测试,根本没

有个鸟用,所以还是将这段内容屏蔽掉。

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

  1. linux意外重启分析,Linux关机重启流程分析

    linux下的关机和重启流程对于一般的桌面应用和网络服务器来说并不重要,但是在用户自己定义的嵌入式系统内核中就有一定的研究意义,通过了解Linux 关机重启的流程,我们对它可以修改和自定义,甚至以此为 ...

  2. Linux关机重启流程分析

    linux下的关机和重启流程对于一般的桌面应用和网络服务器来说并不重要,但是在用户自己定义的嵌入式系统内核中就有一定的研究意义,通过了解Linux 关机重启的流程,我们对它可以修改和自定义,甚至以此为 ...

  3. linux立即重启计算机命令,轻松掌握Linux关机重启命令

    在linux下关机和重启系统有shutdown.halt.reboot.init,对于他们来说他们的内部工作过程是不相同的. 又过了一年,进入了2010年,在去年也许微软抢占了Linux的光环,不过对 ...

  4. linux poweroff无法关机,linux关机重启六种方法(sysrq shutdown halt init ipmi poweroff)

    linux关机重启六种方法(sysrq shutdown halt init ipmi poweroff) 我的博客已迁移到xdoujiang.com请去那边和我交流 linux关机重启六种方法(sy ...

  5. Linux关机重启命令说明

    文章目录 前言 一.基本语法说明 解释命令含义 总结 前言 Linux关机重启命令说明,在 linux 领域内大多用在服务器上,很少遇到关机的操作.毕竟服务器上跑一个服务是永无止境的,除非特殊情况下, ...

  6. linux 关机命令总结,Linux关机命令总结

    在linux命令中reboot是重新启动,shutdown -r now是立即停止然后重新启动,都说他们两个是一样的,其实是有一定的区别的. shutdown命令可以安全地关闭或重启Linux系统,它 ...

  7. 后台运行程序导致的Stopped (tty output)

    aplay xxx.wav & 有的系统中会直接死在后台,用jobs看可以知道: Stopped (tty output) [1] + Stopped (tty output) ./input ...

  8. linux关机命令60秒,Linux关机重启命令有哪些用法

    今天小编给大家介绍下Linux系统的关机与重启命令,涉及的命令有shutdown.halt.reboot,也是本文主要讲解的命令,希望对正在学习的朋友有所帮助. 一,shutdown命令 在linux ...

  9. Linux 关机/重启指令

    Linux系统下关机指令只有root用户终端才能下达(Linux里切换用户可以用 su root 输入密码便进入 root 用户),同时其他终端也会接收到. 如root用户发出关机指令 其他终端也会收 ...

最新文章

  1. easyui combobox默认选中项
  2. Python中的虚拟环境-virtualenv
  3. php加密码访问,怎么给一个PHP密码访问页面加超链接
  4. 人工智障学习笔记——机器学习(8)K均值聚类
  5. 批量修改TS Profile、盘符计算器小工具
  6. Delphi非应用程序主窗口创建MDI
  7. js 生成条形码(JsBarcode.all.min.js)
  8. win7由于无法确定计算机,nvme固态硬盘安装win7教程((解决硬盘无法识别)
  9. Python实现Reed-Xiaoli(RX)高光谱目标检测算法
  10. 开发文件管理器-2015年9月19日
  11. easyBCD修改系统启动项
  12. jieba中文分词组件的词性类型
  13. 京东开源组件库NutUI 3.1 正式发布:开启多端开发之路
  14. iOS核心动画以及UIView动画的介绍
  15. SpringBoot+MongoDB GridFS文件上传、下载、预览实战
  16. vue 图片,视频点击预览按钮方法
  17. 【Python学习教程】数据结构与算法
  18. 计算机专业大专学校排名河南的,2020河南大专学校排名榜单
  19. python爬空气污染实时数据_一键爬取空气质量相关指数
  20. Java基础学习之Servlet 运用学习

热门文章

  1. 基于神经网络的图像分类,图像识别神经网络模型
  2. python语言format是什么意思_Python代码中str.format()函数有什么功能呢?
  3. 搜狗输入法 android 历史版本,搜狗输入法老版本下载
  4. unix linux tecn,对高级 Linux 用户有用的 20 个下令
  5. OpenExpress开源啦
  6. C语言 球弹跳高度的计算
  7. 英文自我介绍(考研/校内面试/复试)
  8. 1-2 认识905.4王国的交流规范
  9. 题解 P1374 【进攻幽暗城】
  10. 2014年放假安排:除夕非法定假日