《UNIX环境高级编程》笔记--作业控制

2024-04-14 21:58

本文主要是介绍《UNIX环境高级编程》笔记--作业控制,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

作业控制允许在一个终端上启动多个作业(进程组),它控制哪一个作业可以访问该终端,以及哪些作业在后台运行,作业

控制要求下面三种形式的支持:

1.支持作业控制的shell。

2.内核中的终端驱动程序必须支持作业控制。

3.内核必须提供对某些作业控制信号的支持。


我们可以键入一些特殊字符来影响前台作业:

1.中断字符(ctrl+c)产生SIGINT。

2.退出字符(ctrl+\)产生SIGQUIT。

3.挂起字符(ctrl+z)产生SIGTSTP。

键入这些字符后将信号SIGTSTP送至前台进程组中的所有进程,后台进程组不受影响。

终端驱动程序必须处理与作业控制有关的另一种情况。我们可以有一个前台作业和若干个后台作业,这些作业中哪一个接受我们

在终端上键入的字符呢?只有前台作业接受终端输入。如果后台作业试图读终端,那么这并不是一个错误,但是驱动程序将检测

到这种情况,并且向后台作业发送一个特定信号SIGTTIN。该信号通常会暂停此后台作业,shell则向有关用户发出这种情况的通

知,然后用户就可用shell命令将此作业转为前台作业运行,于是它就可以读终端了:

yan@yan-vm:~/apue$ cat > a.txt &
[1] 8563
yan@yan-vm:~/apue$
[1]+  Stopped                 cat > a.txt
yan@yan-vm:~/apue$ jobs
[1]+  Stopped                 cat > a.txt
yan@yan-vm:~/apue$ fg %1
cat > a.txt
123
yan@yan-vm:~/apue$ cat a.txt
123


在一个有作业控制的shell中执行如下命令:

yan@yan-vm:~/apue$ ps -o pid,ppid,pgid,sid,comm | cat
  PID  PPID  PGID   SID COMMAND
 8450  8449  8450  8450 bash
 8601  8450  8601  8450 ps
 8602  8450  8601  8450 cat

bash,ps和cat在同一session,ps和cat作为前台进程组而存在,如果是没有作业控制的shell,这三个进程的进程组ID应该是相同的。

这篇关于《UNIX环境高级编程》笔记--作业控制的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/904124

相关文章

揭秘Python Socket网络编程的7种硬核用法

《揭秘PythonSocket网络编程的7种硬核用法》Socket不仅能做聊天室,还能干一大堆硬核操作,这篇文章就带大家看看Python网络编程的7种超实用玩法,感兴趣的小伙伴可以跟随小编一起... 目录1.端口扫描器:探测开放端口2.简易 HTTP 服务器:10 秒搭个网页3.局域网游戏:多人联机对战4.

Java并发编程必备之Synchronized关键字深入解析

《Java并发编程必备之Synchronized关键字深入解析》本文我们深入探索了Java中的Synchronized关键字,包括其互斥性和可重入性的特性,文章详细介绍了Synchronized的三种... 目录一、前言二、Synchronized关键字2.1 Synchronized的特性1. 互斥2.

Python异步编程中asyncio.gather的并发控制详解

《Python异步编程中asyncio.gather的并发控制详解》在Python异步编程生态中,asyncio.gather是并发任务调度的核心工具,本文将通过实际场景和代码示例,展示如何结合信号量... 目录一、asyncio.gather的原始行为解析二、信号量控制法:给并发装上"节流阀"三、进阶控制

Centos环境下Tomcat虚拟主机配置详细教程

《Centos环境下Tomcat虚拟主机配置详细教程》这篇文章主要讲的是在CentOS系统上,如何一步步配置Tomcat的虚拟主机,内容很简单,从目录准备到配置文件修改,再到重启和测试,手把手带你搞定... 目录1. 准备虚拟主机的目录和内容创建目录添加测试文件2. 修改 Tomcat 的 server.X

VSCode配置Anaconda Python环境的实现

《VSCode配置AnacondaPython环境的实现》VisualStudioCode中可以使用Anaconda环境进行Python开发,本文主要介绍了VSCode配置AnacondaPytho... 目录前言一、安装 Visual Studio Code 和 Anaconda二、创建或激活 conda

pytorch+torchvision+python版本对应及环境安装

《pytorch+torchvision+python版本对应及环境安装》本文主要介绍了pytorch+torchvision+python版本对应及环境安装,安装过程中需要注意Numpy版本的降级,... 目录一、版本对应二、安装命令(pip)1. 版本2. 安装全过程3. 命令相关解释参考文章一、版本对

kotlin中的行为组件及高级用法

《kotlin中的行为组件及高级用法》Jetpack中的四大行为组件:WorkManager、DataBinding、Coroutines和Lifecycle,分别解决了后台任务调度、数据驱动UI、异... 目录WorkManager工作原理最佳实践Data Binding工作原理进阶技巧Coroutine

国内环境搭建私有知识问答库踩坑记录(ollama+deepseek+ragflow)

《国内环境搭建私有知识问答库踩坑记录(ollama+deepseek+ragflow)》本文给大家利用deepseek模型搭建私有知识问答库的详细步骤和遇到的问题及解决办法,感兴趣的朋友一起看看吧... 目录1. 第1步大家在安装完ollama后,需要到系统环境变量中添加两个变量2. 第3步 “在cmd中

Windows环境下安装达梦数据库的完整步骤

《Windows环境下安装达梦数据库的完整步骤》达梦数据库的安装大致分为Windows和Linux版本,本文将以dm8企业版Windows_64位环境为例,为大家介绍一下达梦数据库的具体安装步骤吧... 目录环境介绍1 下载解压安装包2 根据安装手册安装2.1 选择语言 时区2.2 安装向导2.3 接受协议

SpringBoot基于沙箱环境实现支付宝支付教程

《SpringBoot基于沙箱环境实现支付宝支付教程》本文介绍了如何使用支付宝沙箱环境进行开发测试,包括沙箱环境的介绍、准备步骤、在SpringBoot项目中结合支付宝沙箱进行支付接口的实现与测试... 目录一、支付宝沙箱环境介绍二、沙箱环境准备2.1 注册入驻支付宝开放平台2.2 配置沙箱环境2.3 沙箱