当前位置: 技术问答>linux和unix
程序不能后台运行
来源: 互联网 发布时间:2016-03-05
本文导语: 我编写了一个minigui应用程序,但是在目标板子上无法在后台运行,具体情况如下: ./gui & 程序可以启动, 但是在串口敲回车后出现命令行, 同时打印[1] + Stopped (tty input) ./gui gui程序无反映, ps显示: ...
我编写了一个minigui应用程序,但是在目标板子上无法在后台运行,具体情况如下:
./gui & 程序可以启动,
但是在串口敲回车后出现命令行,
同时打印[1] + Stopped (tty input) ./gui
gui程序无反映,
ps显示:
891 root 6080 T ./gui
892 root 6080 S ./gui
893 root 6080 T ./gui
894 root 6080 T ./gui
895 root 6080 T ./gui
896 root 6080 T ./gui
897 root 6080 T ./gui
898 root 636 R ps
另外:对这个程序ctrl + c 串口会打印乱码,
请高人指点,谢谢!!!!!!!!!!!!
./gui & 程序可以启动,
但是在串口敲回车后出现命令行,
同时打印[1] + Stopped (tty input) ./gui
gui程序无反映,
ps显示:
891 root 6080 T ./gui
892 root 6080 S ./gui
893 root 6080 T ./gui
894 root 6080 T ./gui
895 root 6080 T ./gui
896 root 6080 T ./gui
897 root 6080 T ./gui
898 root 636 R ps
另外:对这个程序ctrl + c 串口会打印乱码,
请高人指点,谢谢!!!!!!!!!!!!
|
GUI程序不应该读tty的啊!
"[1] + Stopped (tty input)", 是指程序试图从控制终端读, 但是由于在后台运行, 受到SIGTTIN信号而被停止:
man signal有下面的输出:
下面的程序演示了这种情况:
后台运行输出:
Ctrl+C问题就不清楚是什么问题了...
"[1] + Stopped (tty input)", 是指程序试图从控制终端读, 但是由于在后台运行, 受到SIGTTIN信号而被停止:
man signal有下面的输出:
21 SIGTTIN stop process background read attempted from
control terminal
下面的程序演示了这种情况:
/*-
* file: sigttin.c
* auth: mymtom
* date: 2008-02-19
*/
#include
#include
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;
}
后台运行输出:
mymtom@freebsd$ ./sigttin &
[1] 5202
mymtom@freebsd$ sig_ttin: SIGTTIN caught.
[1] + Stopped (tty input) ./sigttin
mymtom@freebsd$ ps
PID TT STAT TIME COMMAND
4740 p0 Is 0:00.01 -bash (bash)
4749 p0 S 0:00.03 ksh
5202 p0 T 0:00.00 ./sigttin
5205 p0 R+ 0:00.00 ps
Ctrl+C问题就不清楚是什么问题了...
|
看样是segment fault
了
了