Spawning Processes and Exec‘ing Processes
衍生外部进程
dateCmd := exec.Command("date")
dateOut, err := dateCmd.Output()
if err != nil {panic(err)
}
fmt.Println("> date")
fmt.Println(string(dateOut))
> date
2022年 4月20日 星期三 19时16分44秒 CST
exec.Command
的执行结果,与在命令行中执行的结果一致。
grepCmd := exec.Command("grep", "hello")
grepIn, _ := grepCmd.StdinPipe()
grepOut, _ := grepCmd.StdoutPipe()
grepCmd.Start()
grepIn.Write([]byte("hello grep\ngoodbye grep"))
grepIn.Close()
grepBytes, _ := io.ReadAll(grepOut)
grepCmd.Wait()
fmt.Println("> grep hello")
fmt.Println(string(grepBytes))
> grep hello
hello grep
与上面的代码不同,这里显式地获取输入/输出管道,启动进程,向管道输入数据,读取管道输出,最后等待进程结束。
lsCmd := exec.Command("bash", "-c", "ls -a -l -h")
lsOut, err := lsCmd.Output()
if err != nil {panic(err)
}
fmt.Println("> ls -a -l -h")
fmt.Println(string(lsOut))
> ls -a -l -h
total 3992
drwxr-xr-x 4 baiye staff 128B 4 20 19:16 .
drwxr-xr-x 83 baiye staff 2.6K 4 2 10:38 …
-rwxr-xr-x 1 baiye staff 1.9M 4 20 19:16 spawning-processes
-rw-r–r-- 1 baiye staff 703B 3 28 18:11 spawning-processes.go
生成命令时,需要显式地提供描述的命令和参数数组,不能只传入一个命令行字符串。如果需要执行字符串样式的完整命令,可以使用bash -c
选项。
替换当前进程
binary, lookErr := exec.LookPath("ls")
if lookErr != nil {panic(lookErr)
}
args := []string{"ls", "-a", "-l", "-h"}
env := os.Environ()
execErr := syscall.Exec(binary, args, env)
if execErr != nil {panic(execErr)
}
total 3016
drwxr-xr-x 4 baiye staff 128B 4 20 20:20 .
drwxr-xr-x 83 baiye staff 2.6K 4 2 10:38 …
-rwxr-xr-x 1 baiye staff 1.5M 4 20 20:20 execing-processes
-rw-r–r-- 1 baiye staff 300B 3 28 18:53 execing-processes.go
Spawning Processes and Exec‘ing Processes相关推荐
- oracle processes修改,修改oracle processes参数过大导致oracle启动不了解决方法
由于系统偶尔会出现数据库连接异常,页面中已经有了数据库的关连接.后来发现oracle maximum(150) of processes的错误. 后来就将此值加大. 在dos下执行以下命令 C:/Do ...
- Golang 随笔杂谈
最近我迷上了Rust语言和区块链,作为C++入行的我还是很难接受GC类语言,C++程序员对于性能效率有着本能地渴望和追求!但是C++却又过于复杂,令程序员的心智负担过重!而Rust语言的优雅和效率令我 ...
- Go by Example
2019独角兽企业重金招聘Python工程师标准>>> 本文收集了 Go By Example 的示例,并将注释写于代码之上,最后几节参考了其他人的翻译 Github 地址:原版 e ...
- 11Grac+ASM+linux2.6.18 processes (100) exceeded
现象:两个节点的11grac环境,在使用软件做复制时,rac1直接down机,rac2ASM实例重启了一下,然后就好了.但rac1一直没启动 由于rac1一直down机无法登陆上去,所以只好登陆rac ...
- PROCESSES, SESSIONS和CONNECTIONS的区别
From:AskTom You Asked Hi Tom What's the difference between connections, sessions and processes? I re ...
- oracle中的open,oracle最常见的三个参数:open_cursors、sessions、processes
一.open_cursors 1. 检查数据库中的 OPEN_CURSORS 参数值: Oracle 使用 init.ora 中的初始化参数 OPEN_CURSORS 指定一个会话一次最多可以拥有的游 ...
- Oracle数据库中processes参数设置
PROCESSES 为连接Oracle数据库的最大进程数,该值包括了所有后台进程和并发进程.processes参数不建议设置特别大,因为当数据库实例启动时,会预先为每个process分配内存和信号量, ...
- 操作系统——Processes 进程
目录 1. 导入--什么是操作系统? Operating System (OS) Operations 2. The notion of a process Process State ...
- processes参数修改
processes:最大连接数 修改参数 show parameter name show paramter processes alter system set processes=6000 sco ...
最新文章
- 互联网思维-产品思维(1)
- CMakeLists.txt
- powerdesigner建立UML活动图
- java axis webservice_Axis Webservice框架使用案例
- 【JS 逆向百例】某易支付密码 MD5+AES 加密分析
- 新浪微博放开140字限制:社交向左 原创向右
- Python实现词云图的3种方式(词频,一段文本,自定义样式)
- 《系统集成项目管理》第十六章 变更管理
- php如何给注册页面加验证码,网站注册页面如何添加验证码注册登录
- 宝塔面板干什么用的?
- 数量关系-经济利润问题
- 2013年十大免费空间综合排行榜-稳定,可靠,速度快,可建站免费空间
- 支付宝 ECSHOP 支付接口 PHP
- 大二〕一直在寻找 生而为人的意义(转载)
- Python利用re正则表达式抓取豆瓣电影Top250排行榜
- 我的人格类型是:ESTP(外向,感觉,思维,知觉)
- 容联云 实现验证码发送
- Linux中创建组的命令,linux创建用户组命令
- 无线通信网络优化的自动路测系统设计(Matlab代码实现)
- 【通信原理课程设计】基于MATLAB/Simulink的2ASK数字带通传输系统建模与仿真