通过 GUI 打开可执行文件不会执行任何操作,但通过终端打开它可以工作

通过 GUI 打开可执行文件不会执行任何操作,但通过终端打开它可以工作

我用 C 语言制作了一个小型贪吃蛇游戏。当我通过 GUI(Nemo)打开它时,没有任何内容被打开。但如果我使用终端打开它,它就会按预期工作。我已经在具有不同操作系统(Ubuntu、Mint 等)的多台计算机上进行了尝试,但都出现了相同的问题。

我还尝试右键单击该文件,选择“使用其他应用程序打开”,然后在“输入要执行的自定义命令”文本框中键入以下内容:

gnome-terminal --working-directory ~/Downloads/My\ Programs/Snake -e "/bin/bash -c './Snake && read'"

然后尝试打开可执行文件。然而,什么也没发生。

但使用终端执行相同的命令效果很好。为可执行文件设置的权限Snake-rwxr-xr-x,其类型为Program (application/x-executable)。另外,file给出:

$ file Snake
Snake: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 2.6.32, BuildID[sha1]=c609e53bda05544c647aab2a19aa865af6dc93c2, not stripped

可能是什么问题呢?

答案1

这与将 Nemo 浏览到 /usr/bin 并单击 时得到的结果相同bash。正确的?

您可以将要运行的 shell 命令(调用 gnome-terminal)放在外壳脚本

(没有什么特定于它是一个 shell 脚本。您也可以像这样编写代码isatty(STDERR) || execlp("gnome-terminal", "--working-directory", ...);)。

GUI 和终端应用程序之间没有更标准的桥梁。如果您想将其打包为 GUI 应用程序,则必须构建自己的 GUI 包装器。没有办法运行通用终端模拟器

从文件浏览器运行可执行文件并不被普遍认为是一个好主意。 (Gnome 文件不再是了)。您的文件浏览器可能也可能不支持运行.desktop文件(即不将它们安装到桌面应用程序菜单/启动器)。这些都不利于安全,例如,如果可移动设备上的可执行文件可以将自定义图标设置为看起来像 Word 文档。

相关内容