Linuxでスライドショープログラムを作成しようとしています。私の問題は、私の監督、mplayerの作品を実行し、ビデオを実行するが、eogまたはfeh画像を表示するために働いていない私のプログラムの自動実行を設定するときです。しかし、ターミナルから私のプログラムに電話をかけて、ビデオや画像を表示すると、うまくいきます。スーパーバイザでプログラム自動実行を設定すると、C言語のsystem()関数が機能しない
ここはsystem()呼び出しのコードです。
if(!strcmp(ext,".JPG") || !strcmp(ext,".jpg") || !strcmp(ext, ".gif") || !strcmp(ext,".png") || !strcmp(ext, ".PNG") || !strcmp(ext, ".GIF"))
{
char command[1000];
snprintf(command, sizeof(command), "eog -f %s%s&", FILE_PATH, liste[counter]);
if(childpid != 0)
{
char kill_command[100];
snprintf(kill_command, sizeof(kill_command), "kill %d", childpid);
system(kill_command);
childpid=0;
}
system(command);
sleep(5);
childpid = getpid() + 2;
exit(EXIT_SUCCESS);
}
else if (!strcmp(ext,".mov") || !strcmp(ext, ".mp4") || !strcmp(ext, ".avi") || !strcmp(ext,".wmv"))
{
if(childpid != 0)
{
char kill_command[100];
snprintf(kill_command, sizeof(kill_command), "kill %d", childpid);
system(kill_command);
childpid=0;
}
char command[1000];
snprintf(command, sizeof(command), "omxplayer -o hdmi -b %s%s", FILE_PATH, liste[counter]);
system(command);
exit(EXIT_SUCCESS);
}
端末からプログラムを実行すると、個人設定、特に 'PATH'と' DISPLAY'環境変数を継承します。これらの環境変数は、スーパーバイザがプログラムを実行しようとするときにはおそらく異なります。 –
'childpid = getpid()+ 2'何?!?!これは絶対にやめてください。 'fork'と' exec'について学んでください。 –
私のパスは静的なのでパスからではありませんが、設定を表示するかどうかはわかりません。私は、mplayerは "-o hdmi"パラメータのビートを働くと思う。それはhdmiにビデオを送信しますが、私はeogまたはfehのための同様の設定を見つけることができませんでした。私は "eog -f --display =:0 path"または "DISPLAY =:0.0 eog -f path"を試しましたが、うまくいきませんでした。 – mehmet