0
我正在寫一個機器人在進入播放音樂,而且我有一些麻煩這個bash shell的工作菌種的bash shell中轉到
proc := exec.Command("/bin/bash")
stdin, errIn := proc.StdinPipe()
stdout, errOut := proc.StdoutPipe()
WriteAndWait(stdin, stdout, "cd /home/user/bot1337/")
WriteAndWait(stdin, stdout, "rm song.mp3")
WriteAndWait(stdin, stdout, "youtube-dl --extract-audio --audio-format mp3 " + Sanitize(command[1]))
WriteAndWait(stdin, stdout, "mv *.mp3 song.mp3")
WriteAndWait(stdin, stdout, "xmms2 play song.mp3")
WriteAndWait(stdin, stdout, "quit")
的WriteAndWait功能
func WriteAndWait(stdout io.Writer, stdin io.Reader, command string) {
stdout.Write([]byte(command + "; echo -e '\\x63\\x68\\x65\\x63\\x6b'\r\n"))
buf := make([]byte, 256)
for {
fmt.Println("Reading...")
rlen, _ := stdin.Read(buf)
strin := string(buf[:rlen])
fmt.Println(strin)
if strings.Contains(strin, "check") {
return
}
}
}
該過程被創建,但程序掛在Read()上 - 它永遠不會讀取標準輸入中的任何東西
在此先感謝您的幫助!
你爲什麼使用'\ r \ n',這是windows行結尾,而不是Linux。 – OneOfOne
哦,我會改變它 – dreadiscool