为了账号安全,请及时绑定邮箱和手机立即绑定

go pkg 文档中的 cmd.StdoutPipe 示例无法在操场上运行

go pkg 文档中的 cmd.StdoutPipe 示例无法在操场上运行

Go
小怪兽爱吃肉 2022-11-15 10:42:27
cmd.StdoutPipego 文档中的示例:https ://pkg.go.dev/os/exec#example-Cmd.StdoutPipe不在操场上运行。https://play.golang.org/p/ek7-_Xa_bN3错误:fatal error: all goroutines are asleep - deadlock!goroutine 1 [IO wait]:internal/poll.runtime_pollWait(0x7faec2ac4e88, 0x72)    /usr/local/go-faketime/src/runtime/netpoll.go:234 +0x89internal/poll.(*pollDesc).wait(0xc000074180, 0xc000100000, 0x1)    /usr/local/go-faketime/src/internal/poll/fd_poll_runtime.go:84 +0x32internal/poll.(*pollDesc).waitRead(...)    /usr/local/go-faketime/src/internal/poll/fd_poll_runtime.go:89internal/poll.(*FD).Read(0xc000074180, {0xc000100000, 0x200, 0x200})    /usr/local/go-faketime/src/internal/poll/fd_unix.go:167 +0x25aos.(*File).read(...)    /usr/local/go-faketime/src/os/file_posix.go:32os.(*File).Read(0xc00000e028, {0xc000100000, 0x28, 0xc000060e80})    /usr/local/go-faketime/src/os/file.go:119 +0x5eencoding/json.(*Decoder).refill(0xc00007e000)    /usr/local/go-faketime/src/encoding/json/stream.go:165 +0x17fencoding/json.(*Decoder).readValue(0xc00007e000)    /usr/local/go-faketime/src/encoding/json/stream.go:140 +0xbbencoding/json.(*Decoder).Decode(0xc00007e000, {0x4cf580, 0xc00000c048})    /usr/local/go-faketime/src/encoding/json/stream.go:63 +0x78main.main()    /tmp/sandbox2294589397/prog.go:24 +0x185Program exited.在本地它运行正常,没有死锁。我无法理解为什么在 go playground 中会发生死锁。
查看完整描述

1 回答

?
明月笑刀无情

TA贡献1828条经验 获得超4个赞

os.exec上的文档(这是这个例子的来源):

请注意,此包中的示例假定为 Unix 系统。它们可能无法在 Windows 上运行,也无法在 golang.org 和 godoc.org 使用的 Go Playground 中运行

该注释没有提供原因,但原因可能是允许运行用户提供的 unix 命令会为恶意代码提供更广泛的攻击面。并不是说不可能以相对安全的方式允许这样做,而是有各种权衡使得禁止os.exec成为自然选择。


查看完整回答
反对 回复 2022-11-15
  • 1 回答
  • 0 关注
  • 89 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信