我正在通过 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
以说服自己它是可执行文件,然后查看代码应该做什么 - 也许需要一个参数。