执行已编译的 C 程序时遇到问题

执行已编译的 C 程序时遇到问题

我正在通过 VirtualBox 运行 Ubuntu v10.04。为了测试我在虚拟机中创建的文件的持久性,我编写了一个非常基本的 C 程序。当我关闭虚拟机并重新启动它时,我看到文件已被保留。

会发生什么:

  • 我可以检查目录ls /root/并查看program_name.c编译后的目录program_name

  • 我使用这个命令来编译:gcc program_name.c -o program_name

  • 我可以运行./a.out并且程序将正确执行。

  • 打开 C 代码会nano program_name.c显示程序,正如我所期望的那样。

问题是...

  • 当我尝试通过该程序时./program_name,什么也没有发生!

  • 如果我检查退出状态 ( echo $?),它为零。

    我很难理解为什么我无法运行已编译的 C 程序,即使我可以找到它。考虑到我可以找到所有文件并./a.out正确执行它,这对我来说是最奇怪的。

编辑:

为了更清晰的演示而进行了编辑。

编辑有关答案...

如果其他人来寻求帮助,应该注意的是,虽然该file program_name命令确实显示该文件是空白的,但原因尚未确定。在重新启动虚拟机之前,我成功运行了可执行文件。

也许我没有正确关闭虚拟机?无论如何,检查文件确实有帮助!

答案1

由于您使用 -o 选项来重命名已编译的程序,因此您现在拥有的 a.out 属于其他内容(早期版本或完全不相关的内容)。

您的程序可能正在运行,但只是没有返回任何输出。检查文件大小并运行file program_name以说服自己它是可执行文件,然后查看代码应该做什么 - 也许需要一个参数。

相关内容