1 回答

TA貢獻(xiàn)1847條經(jīng)驗(yàn) 獲得超7個(gè)贊
對于任何感興趣的人,我想出了一個(gè)解決方案,但我最終不得不使用系統(tǒng)調(diào)用而不是 os/exec 包的函數(shù)。
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 關(guān)注
- 174 瀏覽
添加回答
舉報(bào)