Android C++系列:Linux进程间关系

1. 终端

在UNIX系统中,用户通过终端登录系统后得到一个Shell进程,这个终端成为Shell进 程的控制终端(Controlling Terminal),在前面文章我们说过,控制终端是保存在PCB中的信 息,而我们知道fork会复制PCB中的信息,因此由Shell进程启动的其它进程的控制终端也是 这个终端。默认情况下(没有重定向),每个进程的标准输入、标准输出和标准错误输出都 指向控制终端,进程从标准输入读也就是读用户的键盘输入,进程往标准输出或标准错误输 出写也就是输出到显示器上。在前面信号文章中还提过,在控制终端输入一些特殊的控制键可以给前台 进程发信号,例如Ctrl-C表示SIGINT,Ctrl-\表示SIGQUIT。

init-->fork-->exec-->getty-->用户输入账号-->login-->输入密码-->exec-->shell

文件与I/O文章中提过,每个进程都可以通过一个特殊的设备文件/dev/tty访问它的控制终 端。事实上每个终端设备都对应一个不同的设备文件,/dev/tty提供了一个通用的接口,一 个进程要访问它的控制终端既可以通过/dev/tty也可以通过该终端设备所对应的设备文件来 访问。ttyname函数可以由文件描述符查出对应的文件名,该文件描述符必须指向一个终端 设备而不能是任意文件。下面我们通过实验看一下各种不同的终端所对应的设备文件名。

#include <unistd.h> 
#include <stdio.h>
int main() {
	printf("fd 0: %s\n", ttyname(0)); 
	printf("fd 1: %s\n", ttyname(1)); 

相关推荐

  1. Android C++系列Linux进程关系

    2024-07-13 23:26:01       21 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-13 23:26:01       66 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-13 23:26:01       70 阅读
  3. 在Django里面运行非项目文件

    2024-07-13 23:26:01       57 阅读
  4. Python语言-面向对象

    2024-07-13 23:26:01       68 阅读

热门阅读

  1. thinkphp5多层with关联查询错误问题

    2024-07-13 23:26:01       26 阅读
  2. Understanding EtherCAT Device Serial Number Checking

    2024-07-13 23:26:01       19 阅读
  3. 1.1 Android启动概览

    2024-07-13 23:26:01       22 阅读
  4. HttpUtils工具类

    2024-07-13 23:26:01       18 阅读
  5. 风景区服务热线系统:智能化时代的旅游新选择

    2024-07-13 23:26:01       21 阅读
  6. acnconda虚拟环境管理笔记

    2024-07-13 23:26:01       21 阅读
  7. Spring基础知识

    2024-07-13 23:26:01       18 阅读
  8. 计算机课程名,汇总

    2024-07-13 23:26:01       16 阅读
  9. Python的基础语法——持续更新版

    2024-07-13 23:26:01       18 阅读