linux下作业控制

有3个特殊字符可使终端驱动程序产生信号,经常使用:

中断字符:(DELETE或Ctrl+C),产生SIGINT。

退出字符:(Ctrl + \)产生SIGQUIT。

挂起字符:(Ctrl+Z)产生SIGTSTR。

我们在linux下,让一个程序后台启动,要加上一个&。比如

$ cat > test &                
上面的程序表示在后台启动,从标准输入流读。键入回车,效果如下:

linux下作业控制_第1张图片

我们必须明白,只有前台程序可以接受终端输入,后台作业试图读终端,并不是一个错误,但是终端驱动程序会检测出来,然后发送一个特定信号SIGTTIN给后台作业,就会暂停后台作业。我们想要它运行,就必须转到前台来。前台后台转换的命令是:fg,bg。

fg %1表示将1号作业转为前台,bg %4表示将4号作业转为后台。

linux下作业控制_第2张图片

这样我们就可以将终端的输入进程序了。

我自己编写了一个小程序,以便在前台和后台转换。程序就是不停输出,输出一次sleep2秒。我命名为test。

linux下作业控制_第3张图片

我首先运行这个test,输出。然后我Ctrl+Z挂起这个作业。挂起就是转到了后台,并暂停了程序。然后输入fg %1,将这个作业放到前台运行。发现继续输出。我再一次挂起这个作业,然后输入bg (默认是%1)。转入后台继续工作,继续输出。

linux下作业控制_第4张图片

在后台我想挂起就不行了。只能将其再转入前台进行工作。这样就在前台和后台之间一直轮换着运行着。

如果要禁止后台作业输出到控制终端,可以用stty tostop。

linux下作业控制_第5张图片

前台可以继续输出,但是一旦挂起之后,输入bg继续后台的程序运行,发现没有了输出。这就是之前设置起了作用。

一些常用命令:

jobs

查看正在运行的任务。

fg

将后台命令调至前台继续运行。

bg

将一个后台暂停的命令,继续执行。

&

用在一个命令之后,表示后台运行。


以上是在看《UNIX高级编程》的时候的一些测试。然后网上看了相关的资料集合而成。做一个记录。

ps:

强制杀死一个进程,kill -9 pid;

你可能感兴趣的:(linux下作业控制)