终端与进程

1.bash进程:

pts(虚拟终端),一个虚拟终端连接到linux,就会出现一个bash进程(shell),用于解释用户输入的命令。

查看bash进程命令
ps -ef | grep bash

bash:命令行解释器(shell是一个bash进程)

查看bash目录命令
whereis bash
在这里插入图片描述

2.进程关系:

进程组:一个或者多个进程的集合,每个进程组有一个唯一的进程组ID,可以调用系统函数来创建和加入进程组。

会话(session):是一个或者多个进程组的集合。

一般来说,一个bash(shell)上边运行的所有程序都属于一个会话,而这个会话有一个session leader,通常就是session leader,可以调用系统函数创建新的session

详细查看进程命令
ps -eo pid,ppid,sid,tty,pgrp,comm grep-E'bash|PID|nginx'
pid:进程id
ppid:父进程id
sid:会话id
tty:终端id
pgrp:进程组id

在这里插入图片描述

xshell终端断开,系统会发送SIGHUP信号(终端断开信号),给session leader(bash进程)
bash进程收到SIGHUP信号后,bash会把这个信号发送给session里边的所有进程,收到SIGHUP信号的进程的执行退出动作。

3.strace工具

strace:是一个linux下调试分析诊断工具,可以跟踪程序执行时进程的系统调用以及所收到的信号;

跟踪进程命令
sudo strace trace=signal -p 1359

4.终端关闭时如何不让进程退出

1. 调用系统函数忽略信号

包含头文件:
#include <signal.h>
调用函数:
signal(SIGHUP,SIG_IGN);
SIG_IGN表示忽略信号

2. 建立新的会话
在进程中建立子进程调用系统函数(注意进程组组长调用无效),这样终端关闭时,会保留该子进程。
setsid();

3.使用终端命令

  1. 设置新session:

setsid ./nginx

  1. 忽略SIGNHUP信号:

nohup ./nginx
该命令会把屏幕输出放到当前目录的nohup.out文件中

5.后台运行

./nginx -&
执行的同时,终端可以做其他事
fg切回前台运行



谢谢查看,本文主要用于本人学习复习使用,如有错误欢迎并感谢提出!

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值