[Linux/Qnx] 遇到一个问题 Stopped (tty input)

想让发送数据的进程在后台运行,但是一启动该进程就出现这个问题。

一般这个问题可能和以下原因有关:

"[1] + Stopped (tty input)", 是指程序试图从控制终端读, 但是由于在后台运行, 受到SIGTTIN信号而被停止:

man signal有下面的输出:

21    SIGTTIN      stop process         background read attempted from control terminal

下面的程序演示了这种情况:

void sig_ttin(int signum)
{
        (void)printf("%s: SIGTTIN caught.n", __func__);
        signal(SIGTTIN, SIG_DFL);
}
int main(void)
{
        int     n;
        signal(SIGTTIN, sig_ttin);
        scanf("%d", &n);
        return 0;
}

但是我猜测可能是因为该进程要从串口读取数据,而此串口就是与调试终端连接的串口,所以此进程与终端(tty)因此关联起来,属于前台进程组。

因为测试发现即使在向stdout发送字符,也可以把进程放到后台,只要不打开串口。

相关的东东:

linux/qnx command : jobs, fg, nohup

时间: 2024-08-04 02:32:35

[Linux/Qnx] 遇到一个问题 Stopped (tty input)的相关文章

linux ps top 命令 VSZ,RSS,TTY,STAT, VIRT,RES,SHR,DATA的含义

linux ps top 命令 VSZ,RSS,TTY,STAT, VIRT,RES,SHR,DATA的含义 linuxpstop http://javawind.net/p131 VIRT:virtual memory usage 虚拟内存 1.进程“需要的”虚拟内存大小,包括进程使用的库.代码.数据等 2.假如进程申请100m的内存,但实际只使用了10m,那么它会增长100m,而不是实际的使用量 RES:resident memory usage 常驻内存 1.进程当前使用的内存大小,但不包

Linux如何创建一个新进程

2016-03-31 张超<Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 1.我们先阅读理解task_struct数据结构 1235struct task_struct { 1236 volatile long state; /* -1 unrunnable, 0 runnable, >0 stopped */ 1237 void *stack; 1238 atomic_t usage; 1239 uns

第六周分析Linux内核创建一个新进程的过程

潘恒 原创作品转载请注明出处<Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 task_struct结构: struct task_struct {   volatile long state;进程状态  void *stack; 堆栈  pid_t pid; 进程标识符  unsigned int rt_priority;实时优先级  unsigned int policy;调度策略  struct files

Linux shell 的一个fork炸弹

.(){ .|.& };.  或者  :(){ :|:& };: 这13个字符由Jaromil ,在 2002 年设计了最为精简的一个 fork炸弹的实现. .()  说明下面要定义一个函数,函数名为小数点,没有可选参数:{    表示函数体的开始:.|.& 表示函数体真正要做的事情,首先它递归使用本函数,然后李永贵管道调用一个新进程(它要做的事情也是递归调用本函数),并将其放到后台执行.}    表示函数体的结束:;    并不会执行什么操作,在命令行中用来分隔两个命令用.从总体

gcc和MinGW的异同(在cygwin/gcc做的东西可以无缝的用在linux下,没有任何问题,是在windows下开发linux程序的一个很好的选择)

cygwin/gcc和MinGW都是gcc在windows下的编译环境,但是它们有什么区别,在实际工作中如何选择这两种编译器. cygwin/gcc完全可以和在linux下的gcc化做等号,这个可以从boost库的划分中可以看出来端倪,cygwin下的gcc和linux下的gcc完全使用的是相同的Toolsets.所以完全可以和linux一起同步更新gcc版本,而不用担心问题,并且在cygwin/gcc做的东西(不用win32的)可以无缝的用在linux下,没有任何问题.是在windows下开发

linux怎么模糊查找一个文件

linux如何模糊查找一个文件 在当前目录下搜索指定文件: find . -name test.txt 在当前目录下模糊搜索文件: find . -name '*.txt' 在当前目录下搜索特定属性的文件: find . -amin -10 # 查找在系统中最后10分钟访问的文件find . -atime -2 # 查找在系统中最后48小时访问的文件find . -empty # 查找在系统中为空的文件或者文件夹find . -group cat # 查找在系统中属于 groupcat的文件fi

实验六———分析Linux内核创建一个新进程的过程

分析Linux内核创建一个新进程的过程 攥写人:李鹏举  学号:20132201 ( *原创作品转载请注明出处*) ( 学习课程:<Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 ) 本周要求: 阅读理解task_struct数据结构http://codelab.shiyanlou.com/xref/linux-3.18.6/include/linux/sched.h#1235: 分析fork函数对应的内核处理过

lab6:分析Linux内核创建一个新进程的过程

李俊锋 + 原创作品转载请注明出处 + <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 一.实验原理 1.进程的定义 进程是操作系统的概念,每当我们执行一个程序时,对于操作系统来讲就创建了一个进程,在这个过程中,伴随着资源的分配和释放.可以认为进程是一个程序的一次执行过程. 2.进程与程序的区别 程序时静态的,它是一些保存 在磁盘上得指令的有序集合,没有任何执行的概念. 进程是一个动态的概念,它是程序执行的过程

实验六:分析Linux内核创建一个新进程的过程

20135108 李泽源 阅读理解task_struct数据结构http://codelab.shiyanlou.com/xref/linux-3.18.6/include/linux/sched.h#1235: 分析fork函数对应的内核处理过程sys_clone,理解创建一个新进程如何创建和修改task_struct数据结构: 使用gdb跟踪分析一个fork系统调用内核处理函数sys_clone ,验证您对Linux系统创建一个新进程的理解,推荐在实验楼Linux虚拟机环境下完成实验. 特别