写入 CON(Windows 控制台)不会打印到 STDOUT(控制台)
Writing to CON (Windows console) doesn't print to STDOUT (console)
我了解到 CON
名称等同于 Linux 中的 /dev/tty
。
但是当我使用写入此文件的程序时,它不会打印任何内容,它仅适用于 Linux.
我想我没有正确使用它。
重要提示: 我不是在寻找像 fmt.Println
这样的解决方法,我需要能够打印到这个文件,就像我在 Linux 中所做的那样(/dev/tty
).
这是程序:
package main
import (
"fmt"
"os"
"runtime"
)
func main() {
var ttyName string
if runtime.GOOS == "windows" {
fmt.Println("*** Using `con`")
ttyName = "con"
} else {
fmt.Println("*** Using `/dev/tty`")
ttyName = "/dev/tty"
}
f, _ := os.OpenFile(ttyName, os.O_WRONLY, 0644)
fmt.Fprintln(f, "*** Stdout redirected")
}
程序在 Linux 中打印 "*** Stdout redirected"
但在 Windows 中不打印。
问题与 ttyName
.
有关
我使用 con
作为名称,但它似乎不起作用。
我也尝试过:"con:"
、"\\.\con"
、"\\.\con:"
、"\\?\con"
和 conout
.
如何使用它打印到控制台?
我从这个网站上获取了一些想法:
https://www.mkssoftware.com/docs/man5/dev_console.5.asp
确保使用 Windows 命令提示符进行测试,因为 CON
可能无法按预期使用第三方终端仿真器(如 IDE、Hyper.js 中的嵌入式终端仿真器)等)。
您列出的选项应该有效,大写的 CON
(旧版 DOS 名称)或 \.\CON
(UNC 名称)是安全的选择:
f, _ := os.OpenFile("CON", os.O_WRONLY, 0644)
f, _ := os.OpenFile("\\.\CON", os.O_WRONLY, 0644)
我了解到 CON
名称等同于 Linux 中的 /dev/tty
。
但是当我使用写入此文件的程序时,它不会打印任何内容,它仅适用于 Linux.
我想我没有正确使用它。
重要提示: 我不是在寻找像 fmt.Println
这样的解决方法,我需要能够打印到这个文件,就像我在 Linux 中所做的那样(/dev/tty
).
这是程序:
package main
import (
"fmt"
"os"
"runtime"
)
func main() {
var ttyName string
if runtime.GOOS == "windows" {
fmt.Println("*** Using `con`")
ttyName = "con"
} else {
fmt.Println("*** Using `/dev/tty`")
ttyName = "/dev/tty"
}
f, _ := os.OpenFile(ttyName, os.O_WRONLY, 0644)
fmt.Fprintln(f, "*** Stdout redirected")
}
程序在 Linux 中打印 "*** Stdout redirected"
但在 Windows 中不打印。
问题与 ttyName
.
有关
我使用 con
作为名称,但它似乎不起作用。
我也尝试过:"con:"
、"\\.\con"
、"\\.\con:"
、"\\?\con"
和 conout
.
如何使用它打印到控制台?
我从这个网站上获取了一些想法:
https://www.mkssoftware.com/docs/man5/dev_console.5.asp
确保使用 Windows 命令提示符进行测试,因为 CON
可能无法按预期使用第三方终端仿真器(如 IDE、Hyper.js 中的嵌入式终端仿真器)等)。
您列出的选项应该有效,大写的 CON
(旧版 DOS 名称)或 \.\CON
(UNC 名称)是安全的选择:
f, _ := os.OpenFile("CON", os.O_WRONLY, 0644)
f, _ := os.OpenFile("\\.\CON", os.O_WRONLY, 0644)