Linux - 打开 input/output 的终端
Linux - Open terminal for input/output
我正在编写一个 Rust 应用程序,因为它相当小而且似乎没有任何稳定的 UI 框架,我在控制台中使用 println!
等等 input/output。然而,由于这个程序旨在供人们从互联网下载后直接使用(由于它的用例),他们可能只是双击它而不是导航到终端中的下载目录和 运行从那里开始。
这是一个问题,因为在 Linux 上,它 运行 在后台等待输入,看起来它不工作。在 Windows,Rust 程序默认在 CMD 中打开。 (事实上,我的问题的许多搜索结果都是关于禁用此行为的——这与我想要的完全相反!)。
那么是否可以通过某种方式让我的应用程序在系统的默认终端中打开?我的首选方法是以某种方式嵌入可执行文件以在终端中打开(类似于 MinGW 上的 -mconsole
编译器标志)。否则是否有可能检测到它在后台并将其分叉到终端中?如果那不可能,那么是否至少可以检测到该应用程序未在终端中 运行ning 并抛出一个消息框告诉用户在终端中 运行?
我的应用程序是跨平台的,但我可以在 OS.
上编写有条件编译的代码
一种典型的方法是将 program.sh
与您的可执行文件一起分发。如果 .sh
扩展绑定到在他们选择的 window 管理器中打开终端,它将自动打开。如果不是 - 运行 它来自 shell.
的提示就足够了
没有这个文件你可以:
- 检测程序是否已经 运行 在终端内可以用
isatty()
. There's a crate for it 完成。
- 如果没有,生成终端应用程序进程(see process::Command) and relaunch the program with it by passing its path to the terminal command line options. As @Caesar mentioned there's a bunch of popular terminals that you might want to check for presence on Linux. If nothing is found, xterm 有时可能是后备。
我正在编写一个 Rust 应用程序,因为它相当小而且似乎没有任何稳定的 UI 框架,我在控制台中使用 println!
等等 input/output。然而,由于这个程序旨在供人们从互联网下载后直接使用(由于它的用例),他们可能只是双击它而不是导航到终端中的下载目录和 运行从那里开始。
这是一个问题,因为在 Linux 上,它 运行 在后台等待输入,看起来它不工作。在 Windows,Rust 程序默认在 CMD 中打开。 (事实上,我的问题的许多搜索结果都是关于禁用此行为的——这与我想要的完全相反!)。
那么是否可以通过某种方式让我的应用程序在系统的默认终端中打开?我的首选方法是以某种方式嵌入可执行文件以在终端中打开(类似于 MinGW 上的 -mconsole
编译器标志)。否则是否有可能检测到它在后台并将其分叉到终端中?如果那不可能,那么是否至少可以检测到该应用程序未在终端中 运行ning 并抛出一个消息框告诉用户在终端中 运行?
我的应用程序是跨平台的,但我可以在 OS.
上编写有条件编译的代码一种典型的方法是将 program.sh
与您的可执行文件一起分发。如果 .sh
扩展绑定到在他们选择的 window 管理器中打开终端,它将自动打开。如果不是 - 运行 它来自 shell.
没有这个文件你可以:
- 检测程序是否已经 运行 在终端内可以用
isatty()
. There's a crate for it 完成。 - 如果没有,生成终端应用程序进程(see process::Command) and relaunch the program with it by passing its path to the terminal command line options. As @Caesar mentioned there's a bunch of popular terminals that you might want to check for presence on Linux. If nothing is found, xterm 有时可能是后备。