子shell

  • 2015-06-11
  • 45
  • 0
  • 1

Linux上创建子进程的方式有三种:一种是fork出来的进程,一种是exec出来的进程,一种是clone出来的进程。

(1).fork是复制进程,它会复制当前进程的副本(不考虑写时复制的模式),以适当的方式将这些资源交给子进程;

(2).exec是加载另一个应用程序,替代当前运行的进程,也就是说在不创建新进程的情况下加载一个新程序;

注意:为了保证进程安全,若要形成新的且独立的子进程,都会先fork一份当前进程,然后在fork出来的子进程上调用exec来加载新程序替代该子进程

一般来说,判断bash是否进入子shell最简单的方法是,执行"echo $BASHPID"命令。

[yq@test-01 ~]$echo $BASH
/bin/bash
[yq@test-01 ~]$echo $BASHPID
8832

# 当bash内置命令时,不进入子shell
[yq@test-01 ~]$d=$BASHPID
[yq@test-01 ~]$echo $d
8832

# 管道使得任何命令都进入进程组,会进入子shell
[yq@test-01 ~]$cd /tmp|echo $BASHPID
8857

评论

还没有任何评论,你来说两句吧