首页 > 编程语言 >setsid 使程序脱离终端运行

setsid 使程序脱离终端运行

时间:2023-05-09 15:36:04浏览次数:47  
标签:00 pts 脱离 ping setsid 64 终端 root

直接使用 setsid cmd ...

$ ping ::1
root      399698  399637  0 14:51 pts/42   00:00:00 ping ::1
$ setsid ping ::1
root      399707       1  0 14:52 ?        00:00:00 ping ::1

注意看,现在它已经没有隶属任何进程组(父进程是init)和隶属的会话(没有控制终端pts/x),如果此刻退出bash会话,程序也会继续运行。

$ ls -l /proc/$$/fd/1
lrwx------ 1 root root 64 May  9 14:50 /proc/399648/fd/1 -> /dev/pts/43

$ ls -l /proc/399707/fd/1
lrwx------ 1 root root 64 May  9 15:21 /proc/399707/fd/1 -> '/dev/pts/1 (deleted)'

-c 参数

如果使用 -c 参数将控制终端设置为当前控制终端,则退出bash会话程序也会退出:

$ setsid -c ping ::1
root      399832       1  0 15:05 pts/1    00:00:00 ping ::1

-w 参数

-w 参数等待程序退出,并使用相同的返回,虽然^C中断的不是子程序,但是不会输出一行$PS1

$ setsid -w ping ::1
root      399934  399921  0 15:11 pts/42   00:00:00 setsid -w ping ::1
root      399935  399934  0 15:11 ?        00:00:00 ping ::1

将其父进程杀死,自动成为孤儿进程,被init进程收养:

$ kill 399934
root      399935       1  0 15:11 ?        00:00:00 ping ::1

使用 strace 连接到程序输出

$ strace -ewrite -p $PID
strace: Process 400030 attached
write(1, "64 bytes from ::1: icmp_seq=465 "..., 53) = -1 EIO (Input/output error)

$ strace -ewrite -p 400030 -s 53
strace: Process 400030 attached
write(1, "64 bytes from ::1: icmp_seq=513 ttl=64 time=0.077 ms\n", 53) = -1 EIO (Input/output error)

参考

参考:https://www.linuxcool.com/setsid

标签:00,pts,脱离,ping,setsid,64,终端,root
From: https://www.cnblogs.com/develon/p/17385131.html

相关文章

  • windows php执行终端命令
    $cmd='"H:\phpstudy_pro\Extensions\php\php7.3.4nts\php.exe"I:\weman\webman\start.phpI:\weman\webman\runtime\/windows\start_monitor.phpI:\weman\webman\runtime\/windows\start_task.phpI:\weman\webman\runtime\/win......
  • Linux终端多彩显示
    PS1="\[\e[1;35m\]\u@\[\e[32m\]\h\e[36m\]\w\$\[\e[m\]"在/etc/profile尾行添加以上内容,保存退出后source/etc/profile生效......
  • 黑客终端——wp——qsnctf
    进入网页,发现是网页版的cmd(/doge)输入ls发现输出了以下内容按F12检查代码,在<script>中发现输入命令为cat/flag则可获得flag此时即可直接复制代码中的flag,也可以通过输入命令获取-End-......
  • Mac终端出现 brew command not found 解决
    MacOS上您需要安装unrar以支持PaddlePaddle,可以使用命令brewinstallunrar执行命令后发现brew不存在jimmy@MacBook-Pro~%brewinstallunrarzsh:commandnotfound:brewjimmy@MacBook-Pro~%解决方案输入命令:jimmy@MacBook-Pro~%/bin/zsh-c"$(curl-fsS......
  • C++-改变终端(cout/printf)输出不同颜色的字体-Linux
    C++-改变终端(cout/printf)输出不同颜色的字体-Linuxhttps://blog.csdn.net/qq_41972382/article/details/90311102不同颜色的输出主要依据格式ESC[*m,ESC的八进制为\033,*可以是多个属性的组合,用,隔开。printf#include<iostream>usingnamespacestd;intmain(){print......
  • 在终端(Terminal)执行 gradle build 命令控制台提示 GBK 字符编码错误
     1、错误提示: 1.1、使用EditPlus和IntellJIDEA都显示文件是UTF-8,明明都是UTF-8,却依然不同。 1.2、通过命令行工具查看活动代码页为936,其对应字符编码GBK,由此可知是字符编码不一致导致的。 1.3、EditPlus和IntellJIDEA和命令行(CMD)工具或终端使用的字符集不同,又由于......
  • 父元素设置相对定位和overflow:hidden会清除子元素绝对定位的脱离文档流效果
     当父元素同时设置相对定位和overflow:hidden时会使得子元素的绝对定位的脱离文档流效果失效。原因:绝对定位会根据最近的设置了绝对定位或相对定位的祖先元素进行定位,绝对定位会使得元素脱离文档流,但这里overflow:hidden会消除脱离文档流的效果,导致了son在设置了绝对定位后依然......
  • c# winform 辅助测试工具,方便记录错误信息,方便查看调试错误,用INI存储,可脱离数据库...
    测试的时候做的一个辅助测试工具在找到了bug的时候可以方便的记录下出错的页面,出错方式,错误信息和解决办法错误信息都保存到一个ini文件下,可通过软件查看更加直观当然了,因时间仓促做的并不完美,源码提供下载,有兴趣的可自行修改,当然改完了也给我看看更好......
  • 新品首发丨计讯物联5G水利遥测终端机TY511-B3,推动5G+智慧水利再进化
    当前,水利在全面感知、全面互联、智慧应用等方面较其他行业存在明显差距。基于物联网行业通信技术的不断突破和水利行业对高速移动通信的强烈需求,5G移动通信以高速率、大带宽、低时延、广连接等特点让水利数据快速高效地传输成为可能,逐渐成为水利行业高质量发展的重要驱动力量。计......
  • 处理Linux 终端中文显示乱码问题
    问题详情:中文命名的文件或者文件夹显示?号或者□,无法正常显示文件名1、查看是否已安装中文字体#查看已安装的中文字体fc-list:lang=zh#查看已安装的中文字体并排序fc-list:lang=zh-cn|sort2、安装字体库yum-yinstallfontconfig3、添加中文字体,建立存储中文......