1 回答

TA贡献1847条经验 获得超7个赞
对于任何感兴趣的人,我想出了一个解决方案,但我最终不得不使用系统调用而不是 os/exec 包的函数。
package main
import (
"log"
"os"
"syscall"
"unsafe"
)
var tty = "/dev/ttys001"
var cmd = "vim\n"
func main() {
ttyFile, err := os.Open(tty)
if err != nil {
log.Fatalln(err)
}
defer ttyFile.Close()
cbs, err := syscall.ByteSliceFromString(cmd)
if err != nil {
log.Fatalln(err)
}
var eno syscall.Errno
for _, c := range cbs {
_, _, eno = syscall.Syscall(syscall.SYS_IOCTL,
ttyFile.Fd(),
syscall.TIOCSTI,
uintptr(unsafe.Pointer(&c)),
)
if eno != 0 {
log.Fatalln(eno)
}
}
}
- 1 回答
- 0 关注
- 175 浏览
添加回答
举报