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 $?
0です。コンパイルされたCプログラムを見つけることができるにもかかわらず、なぜ実行できないのかを理解するのが困難です。すべてのファイルを見つけて正しく実行できることを考慮すると、
./a.out
これは私にとって最も奇妙なことです。
編集する:
より明確なプレゼンテーションのために編集されました。
関連する回答を編集...
file program_name
他の人が助けを求めると、コマンドを実行するとファイルが空であることが示されますが、理由は判明していないことに注意してください。仮想マシンを再起動する前に実行可能ファイルを正常に実行しました。
たぶん、仮想マシンを正しくシャットダウンしていませんか?とにかく、ファイルを確認するのに役立ちます!
答え1
-oオプションを使用してコンパイルされたプログラムの名前を変更したので、他のもの(以前のバージョンまたはまったく関連していないもの)に属するa.outを持つようになりました。
プログラムは実行中ですが、出力が返されない可能性があります。ファイルサイズを確認し、file program_name
実行可能であることを確認し、コードが何をすべきかを確認します(おそらくパラメータを使用)。