shell中后台运行函数
来源:互联网 发布:家庭装修设计软件 编辑:程序博客网 时间:2024/06/05 08:19
在shell中定义好的函数,运行的时候可以直接在脚本里面通过func &方式后台运行。
一开始我很好奇为什么shell脚本里面定义好的函数可以这么用,通常我们在脚本中都是以后台方式运行其它的脚本或者命令。
于是做了如下一个实验:
运行如上脚本后,通过ps查看会发现当前运行了两个shell进程,输出如下:
所以可以确认,shell里面是可以直接以后台方式运行函数的,后台运行的函数以一个新的进程运行。可是这个时候看一下脚本的输出,会发函数虽然以后台方式在运行了,但是获取到的当前进程id却和主进程一样:
分析原因,可能是因为新的进程继承了主进程的环境变量,直接把$$也copy过来了,所以在新的进程里面获取到的进程id是和父进程一样的。这个现象和fork()很类似,于是google了一下,网上有人问到shell里面是否有类似于c函数fork的实现,下面的回答就是用&。
所以这个后台运行的函数进程,应该是直接copy的主进程的环境变量,导致在函数进程里面通过$$获取到的进程id是错的。
最后在分享一个小技巧,在shell里面如果以后台的方式运行一个代码片段,前提是不定义函数,实现方式是:
{ ....
....
} &
阅读全文
0 0
- shell中后台运行函数
- shell中后台运行函数
- shell脚本后台运行
- Shell后台运行
- shell 脚本后台运行
- nohup后台运行shell
- linux shell程序后台运行
- linux后台运行shell脚本
- [后台]iOS中后台运行
- iOS中后台运行
- iOS中后台运行
- iOS中后台运行
- iOS中后台运行
- iOS中后台运行
- iOS中后台运行
- iOS中后台运行
- iOS中后台运行
- iOS中后台运行
- Android VideoView播放视频竖屏切换横屏有黑白边无法全屏
- vs中debug版本何release的区别
- csdn如何转载
- 十进制转二进制含代码
- c# List.FindAll和for的性能对比
- shell中后台运行函数
- “小学生遇到苏轼”: 大数据教育将迎来普及
- 初识oracle的本地管理表空间和字典管理表空间
- 通过JS判断网络状态调研及实例demo说明
- NOIP 2015 愤怒的小鸟
- 齐次坐标详解与普通坐标之间的转换
- 【SMOJ】2017.10.18模拟赛27
- jvm类加载器
- linux下的strerror和perror