Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2445078
  • 博文数量: 540
  • 博客积分: 11289
  • 博客等级: 上将
  • 技术积分: 6160
  • 用 户 组: 普通用户
  • 注册时间: 2008-02-11 20:27
个人简介

潜龙勿用,见龙在田

文章分类

全部博文(540)

文章存档

2018年(2)

2013年(5)

2012年(24)

2011年(104)

2010年(60)

2009年(217)

2008年(128)

分类: LINUX

2011-02-24 10:42:12

shell 脚本也能启动他自已的子进程. 这些子 shell(即子进程)使脚本因为效率而同时进行多个
子任务执行时能做串行处理.
一般来说,脚本里的一个外部命令(external command)能生成(forks)出一个子进程,然而Bash内建(builtin)的命令却不这样做,因此,内建命令比起外部的等价命令执行起来更快.

圆括号里的命令列表
 
( 命令 1; 命令 2; 命令 3; ... )
    嵌在圆括号里的一列命令在一个子 shell 里运行.

注意:  在子 shell 里的变量不能被这段子 shell 代码块之外外面的脚本访问.这些变量是不能被
   产生这个子 shell 的父进程(parent process)存取的,实际上它们是局部变量
  (local variables).

在子 shell 中的目录更改不会影响到父 shell.
子shell只能继承父shell的一些属性,而子shell不可能反过来改变父shell的属性。子shell能够从父shell继承得来的属性有:当前的工作目录、环境变量、标准输入输出和错误输出、所有已打开的文件描述符、忽略的信号。子shell不能从父shell继承得来的属性是:除了环境变量和.bashrc文件中定义变量之外的shell变量、未被忽略的信号处理。

注意:   在一个大括号内的代码块不会运行一个子 shell. 只表示一组命令,最后必须以分号;结尾
  { command1; command2; command3; ... }

=========获取子进程的执行返回状态
#!/bin/bash

(ping 10.0.1.1 -c 3) &
(ping 10.0.1.219 -c 3) &
echo "$$ pid is :$$" >ping.pid
jobs -p >>ping.pid
for pid in `jobs -p`;do
    wait $pid
    retval="$?"
    echo "$pid response code is: $retval"
done
# 如果需要精确地知道哪个PID的返回状态,需要进行精确的进程匹配信息。
阅读(1129) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~