我想在不使用终端的情况下运行程序 - 这可能吗?怎么样?

时间:2010-11-10 16:59:41

标签: c linux ubuntu

我有一个程序可以进行文件复制,但不需要打印终端。

现在我想通过双击./filemove来运行该文件,但它没有做任何事情。通过终端它工作正常。

我认为这是因为我需要包含标题,而我不知道如何将标题包含在该文件中。

任何人都可以帮助我吗?我想知道如何将头文件包含到可执行文件中,或者这不是原因而不是其他原因?

谢谢。

我使用的是Ubuntu Linux操作系统。我没有采取任何环境变量,仍然无法找到它!

3 个答案:

答案 0 :(得分:4)

我将对此进行一次尝试,并猜测您的问题与文件路径有关。在Linux上,你可以绝对运行没有终端的程序。终端只是应用程序的接口。您正在使用的桌面环境也是如此。

我假设你的filemove程序正在使用相对路径。我猜测正在发生的事情是,当你双击你的应用程序时,DE会从不同的目录运行它。这是非常反直觉的但是可能的。因此,如果您的程序位于/home/user/myproject/并且您双击它,那么DE可能会从/home/user/运行它。

我建议将输出添加到您的程序中,并打印出它的工作目录。由于您没有在CLI上运行它,因此请将其打印到文件中。

编辑:你也可以尝试将任何相对文件路径更改为绝对文件路径并查看它是否有效。这至少会告诉你工作目录是否存在问题。

答案 1 :(得分:0)

如果您想进一步尝试调试它,请创建一个包含以下内容的shell脚本:

#!/bin/sh
exec strace /path/to/yourprogram "$@" >/tmp/strace.out 2>&1

使脚本可执行,并运行该脚本而不是程序,在/tmp/strace.out中查找线索 确保已安装strace程序(apt-get install strace

答案 2 :(得分:0)

一个疯狂的猜测:当你在终端中运行它时,你是否给你的程序提供参数?如命令 ./ filemove oldname newname

在这种情况下,您需要以其他方式将这些参数提供给程序。至少在某些窗口系统中,您可以在程序图标上拖放文件,以便将这些文件的路径作为参数。