【发布时间】:2023-01-26 11:55:41
【问题描述】:
我正在制作一个小型项目,该项目从一个包含 101 个项目的文件中读取,创建一个字符串向量,然后随机访问其中一个项目并将其打印到标准输出。从终端运行时,无论是通过cargo run,该程序都完全按照预期运行
或者通过使用 ./executable_name 从终端运行可执行文件。问题是,如果我在没有打开终端的情况下双击可执行文件,则没有地方可以打印信息,程序基本上是无用的。我知道如何使用检查终端是否打开
if atty::is(Stream::Stdout) {
println!("Already in terminal");
} else {
// this is where I get confused
}
但从那里我不知道去哪里。我已经尝试过Command::new("sh");之类的东西,但我正在努力处理文档。最终,我的想法是我可以在我的合作伙伴 Mac 上编译它,而不会像我在 Linux 上编写它时那样失去它的功能,并创建一个易于使用的应用程序来在她的机器上运行它。
【问题讨论】:
-
制作一个终端应用程序,它可以工作在一个终端,很好。如果你想做一个GUI应用,也就是不需要终端的应用,也可以。但这些是不同的东西。我的观点是:如果你是做终端应用,那么只做一个终端应用是可以的。从终端运行它取决于用户。
-
这不是特定于 Rust 的问题,更像是一个一般的命令行问题。无论我认为哪种语言,解决方案都应该是相同的。然而,影响答案的是操作系统。您真正想要做的是将您的操作系统配置为在双击该应用程序时打开一个虚拟终端。我不认为你的程序会负责这样做......
-
所以我认为你的问题应该是:“为什么 Mac 不在虚拟终端中启动我的应用程序”?