起動後にUbuntuサーバーにプログラムを起動させたいので、プログラムの実行可能アドレスを次のように/etc/rc.local
入力しますspace+&
。
/home/m/myapp &
しかし、成功しませんでした!私のプログラムはgtk +ライブラリを使って画像を表示する単純なC ++コードで、手動で実行すると機能します。しかし、起動時に自動的に実行したいのですが、方法がわかりませんか?
編集:簡単な目的のコンピュータを作成したいと思います。実際にはロボットで、プログラムはC ++で書かれており、実行可能ファイルは/home/m/myapp
。ユーザーメニューやシステム制御機能はありません。したがって、電源を入れた後に自動的に実行する必要があります。
さらに説明したい場合は、システムは次のように動作するはずです。
ユーザーがシステムの電源を入れると、ウェルカムイメージが表示され、ユーザーが音声コマンドを発信するのを待ちます。その後、音声を認識してその音声に関連する画像/動画を表示し、再びウェルカム画像を表示して新しいコマンドを待ちます。
メニューもなく、ログインページもなく、ユーザーが使用できるものもありません。上記のように、このシステムはユーザーコマンドを介してのみ実行されます。
Linuxに初めて触れてみると、バックグラウンドプログラムなのかわかりませんか?どうすればいいですか?
答え1
GTKにはXが必要で、Xがないとプログラムは画像を表示できません。
ログインマネージャのコンテキストで実行するには、ログインマネージャのデスクトップ環境に追加します。 (これは私が最後にUbuntuを見たときに/var/lib/somethingでした)
それ以外の場合は、ログインマネージャを自動的におもちゃセッションを開く「nodm」などの非対話型マネージャに置き換えてから、C ++アプリケーションをセッションの起動アプリケーションに追加できます。
Openboxで自動的に起動するようにアプリケーションをどこに追加したのかわかりませんが、~/.xsession
常に機能します。
次に~/.xsession
ファイルを作成します(manページを参照)。yourapp&
openbox-session
xinit