1. 前后台任务
我们之前在 信号(一)【概念篇】 介绍过 Crtl + c 的本质就是给前台进程发送一个信号,进程执行该信号的默认处理动作,进而终止进程,随后我们还证明后台进程是无法接收到 Crtl + c 之类的信号的,即只有前台进程才能获得标准输入。
并且,我们曾经是这样说的:“ 一次登录就启动一个终端,一个终端一般配一个bash,每一次登陆,只允许一个进程是前台进程 ”,其中每次登录,linux 系统就会形成一个会话,每一个会话都会创建一个 bash 进程,一个session只能有一个前台进程在运行,而键盘信号只能发送给前台进程。而因为键盘文件只有一个,因此前台进程只能有一个。
[outlier@aliyun process]$ ./test >> log.txt &
[1] 9381
[outlier@aliyun process]$ ./test >> log2.txt &
[2] 9383
[outlier@aliyun process]$ ./test >> log3.txt &
[3] 9384
# 其中的[1] [2] [3] 称为后台任务号
[outlier@aliyun process]$ jobs # 查看后台任务
[1] Running ./test >> log.txt &
[2]- Running ./test >> log2.txt &
[3]+ Running ./test >> log3.txt &
[outlier@aliyun process]$ fg 2 # 将后台进程提升为前台进程
./test >> log2.txt
[outlier@aliyun process]$ fg 3
./test >> log3.txt
^Z # 通过暂停进程将前台变为后台
[3]+ Stopped ./test >> log3.txt
[outlier@aliyun process]$ jobs
[1]- Running ./test >> log.txt &
[3]+ Stopped ./test >> log3.txt
[outlier@aliyun process