Linux(UbuntuとCentOS)とWindows 7オペレーティングシステムでは、C言語で簡単な追加プログラムを作成しました。ソースコードは次のとおりです。
#include <stdio.h>
int main(){
int a,s,d;
printf("type the values u want to add and give tab between them\n");
scanf("%d %d",&a,&s);
d=a+s;
printf("addition is %d",d);
return 0;
system("read -p 'Press Enter to EXIT...' var");
}
Windowsではダブルクリックすると実行されますが、addition.exe
Ubuntu(CentOSでも)では実行可能ファイルをクリックしてもaddition
何も起こりません。端末を実行したり開いたりしません。ただし、./addition
端末に入力すると実行されます。
しかし、ダブルクリックして実行したいです。どうすればいいですか?
このファイルの属性は次のとおりです。
また、「プロパティを開く」セクションには、「ターミナルで開く」などのオプションはありません。
.desktop
また、次のようなファイルを作成してみました。
[Desktop Entry]
Name=addition
Type=Application
Exec=/media/smit/D/smits programs of c/projects by code blocks/02U/addition/bin/Debug/addition
Terminal=true
クリックすると、addition.desktop
アプリケーションの起動中にエラーが発生したことが表示されます。
また、このデスクトップファイルを/usr/share/applications
。
ベストアンサー1
問題の核心はコンソールアプリケーションであるプログラムを実行しようとしています。端末に接続されていません。ターミナルでは単に名前を付けてプログラムを実行できますが、GUIではコンソールアプリケーションを実行するにはターミナルウィンドウが表示されるように明示的に指定する必要があります(特にUbuntu UnityなどのGNOMEベースのデスクトップの場合)。 。
.desktop
実行する必要があるのは、プログラムの4つのフィールドを持つファイルも作成する必要があることです。例は次のとおりです。
[Desktop Entry]
Name=MyProg
Type=Application
Exec=/home/xieerqi/example_directory/hello_world_prog
Terminal=true
CentOSについてはよくわかりませんが、Ubuntuに関する限りの要件は、.desktop
アプリケーションも実行可能でなければならないということです。ユーザーホームディレクトリの下のディレクトリにある場合。不要なファイル.desktop
など、別のディレクトリにあるファイルです/usr/share/applications
。
したがって、ファイルが適切な場所にあり、.desktop
実行可能になったらプログラムを実行できます。重要なのはTerminal=true
ラインです。その後、GUIは端末を起動し、そこからプログラムを実行するように指示します。ノートgetchar();
:プログラムが何かを実行してすぐにシャットダウンする場合、プログラムが終了するとターミナルウィンドウが終了するため、ウィンドウを開いたままにするには遅延や呼び出しが必要です。これがまさに多くのユーザーが「なぜ私のプログラムが実行されていないのですか?」と混乱している理由です。プログラムが実行されますが、実際にはすぐに終了します。
補足説明:
- を取り除きます
system("read -p 'Press Enter to EXIT...' var");
。呼び出しread
はシェル組み込みです。スタンドアロンプログラムではありません。たとえば、シェルを使用する場合にのみ使用できることを意味しますbash
。 Cを使用している場合プログラムに遅延を追加するには、またはscanf()
を正しく使用してください。getchar()
これはその行に到達しないreturn 0;
ことを意味します(プログラムはステートメントで終了します)、プログラムに設定された一時停止位置も無効です。system()
return
- 読むこの投稿AskUbuntuから正しいファイルを取得する例については、
.desktop
次のリンクを参照してください。公式文書。 - 怠惰な気がし、各実行ファイルのファイルを作成したくない場合は、
.desktop
さまざまなソリューションがあります。ここ。そこにスクリプトを投稿したりしました。