240 发简信
IP属地:山东
  • 一篇文章搞懂G1收集器

    一、何为G1收集器 The Garbage-First (G1) garbage collector is a server-style garbage collector,...

  • Java对象延迟初始化的实现

    一、什么是延迟初始化? 在Java多线程程序中,有时候需要采用延迟初始化来降低初始化类和创建对象的开销。延迟初始化实际上就是:当我们要进行一些高开销的对象初始化操作时,只有在...

  • Zeal离线文档下载速度慢解决方案

    1. 安装使用教程参考 Zeal——好用的离线 API 文档大全! 2.解决下载速度问题 Zeal的文档都保存在国外的服务器上,如果用Zeal直接下载,速度极慢,而且容易中断...

  • 120
    SpringBoot简单整合redis

    Jedis和Lettuce Lettuce 和 Jedis 的定位都是Redis的client,所以他们当然可以直接连接redis server。 Jedis在实现上是直接连...

  • 2020-07-06

    从今天开始对于《Linux命令行与shell脚本编程大全》做一些笔记,前十章都比较基础,像是基本的bash shell命令、linux文件系统的使用、文件和目录的管理、编辑器...

  • 120
    CS:APP 二进制炸弹拆解全解析

    花了一段时间做完了暑假作业, 二进制炸弹破解的过程可谓苦尽甘来 现在把自己写的解析报告放上来, 纯原创, 没有参考任何关于此炸弹的解析 可能会与你拿到的炸弹有所不同, 本文只...

  • 单使用coproc命令而不添加任何参数,只会将你要执行的命令置入后台模式,而不会生成子shell。楼主可以用ps -f和ps --forest着两个命令来查看是否有子shell生成。
    如下面的例子,sleep和ps进程的PPID是同一个--用于登录某个虚拟控制器终端或在GUI中运行终端仿真器时所启动的默认的交互shell,是一个**父shell**。

    [root@CloudVM ~]# coproc sleep 10
    [1] 32536
    [root@CloudVM ~]# ps -f
    UID PID PPID C STIME TTY TIME CMD
    root 32498 32495 0 19:29 pts/0 00:00:00 -bash
    root 32536 32498 0 19:29 pts/0 00:00:00 sleep 10
    root 32540 32498 0 19:29 pts/0 00:00:00 ps -f
    [root@CloudVM ~]# ps --forest
    PID TTY TIME CMD
    32498 pts/0 00:00:00 bash
    32536 pts/0 00:00:00 \_ sleep
    32547 pts/0 00:00:00 \_ ps
    [root@CloudVM ~]#

    其实,你文中最后提到的那个coproc协程搭配进程列表实现子shell的嵌套,结果当中只有进程列表生成了子shell,而coproc只是将进程列表置入后台,其本身并没有生成子shell。你可以仔细看看ps -f的输出来观察PID和PPID,据此确认shell的父子关系。

    wsx@wsx-ubuntu:~$ coproc ( sleep 10; sleep 2 )
    [1] 3438
    wsx@wsx-ubuntu:~$ jobs
    [1]+ 运行中 coproc COPROC ( sleep 10; sleep 2 ) &
    wsx@wsx-ubuntu:~$ ps --forest
    PID TTY TIME CMD
    3420 pts/1 00:00:00 bash ##登录虚拟控制器终端是所启动的默认的交互式shell,父shell
    3438 pts/1 00:00:00 \_ bash ##进程列表生成的子shell
    3439 pts/1 00:00:00 | \_ sleep ##进程列表生成的子shell中执行对应的命令-sleep
    3440 pts/1 00:00:00 \_ ps ##查看进程状态

  • 加油鸭

    SpringBoot整合shiro-MD5盐值加密

    为什么要进行密码加密? 在我们的日常生活中,许多人有着在不同网站上使用相同密码的坏习惯(包括我也是qaq),假如应用程序或服务器出现漏洞,数据被窃取,用户的明文密码直接被暴露...

  • SpringBoot整合shiro-MD5盐值加密

    为什么要进行密码加密? 在我们的日常生活中,许多人有着在不同网站上使用相同密码的坏习惯(包括我也是qaq),假如应用程序或服务器出现漏洞,数据被窃取,用户的明文密码直接被暴露...

  • 写的挺好,详实易懂

    SpringSecurity简单使用

    什么是SpringSecurity? Spring Security是一个能够为基于Spring的企业应用系统提供声明式的安全访问控制解决方案的安全框架。它提供了一组可以在S...

  • 120
    SpringSecurity简单使用

    什么是SpringSecurity? Spring Security是一个能够为基于Spring的企业应用系统提供声明式的安全访问控制解决方案的安全框架。它提供了一组可以在S...

  • C++中的 "override"

    简介 本章节主要介绍在C++中override关键字的主要作用。在阅读本章节前,需要先理解C++中的虚函数. 例程 成员函数为虚函数我们的意图是在子类Derived1与Der...