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
。正しいですか?
実行したいシェルコマンド(gnome-terminal呼び出し)を入れることができます。シェルスクリプト。
(シェルスクリプトと呼ばれるものには関係ありません。このようなコードを書くこともできますisatty(STDERR) || execlp("gnome-terminal", "--working-directory", ...);
)。
GUIとターミナルアプリケーションの間には標準ブリッジはありません。 GUIアプリケーションにパッケージするには、独自のGUIラッパーをビルドする必要があります。いいえ汎用端末エミュレータの実行。
ファイルブラウザで実行可能ファイルを実行することは一般的に良い考えではありません。 (GNOMEファイルはもうありません)。お使いのファイルブラウザは、ファイルの.desktop
実行をサポートする場合もあれば、サポートしていない場合もあります(デスクトップアプリケーションメニュー/実行プログラムにファイルをインストールしないなど)。たとえば、リムーバブルデバイスの実行可能ファイルにWord文書のように見えるようにカスタムアイコンが設定されていると、これはセキュリティに有害です。