シェルを入力すると、vlc(ビデオを再生するプログラム)があります。
/ home/vlc "/ home/my movies /見たい映画.mkv"
それは映画を開き、再生します。
ただし、次のプログラムを実行すると:
#include <unistd.h>
int main(void) {
execl("/home/vlc", "/home/my movies/the movie i want to see.mkv",NULL);
return 0;
}
vlcは開きますが、何も再現しません。どうすれば解決できますか?
私が試したもの:
推測しました
execl("/home/vlc", "/home/my movies/the movie i want to see.mkv",NULL);
シェルでの入力と同等でした:
/home/vlc /home/my movies/the movie i want to see.mkv
動作しないので、試しました
execl("/home/vlc", "\"/home/my movies/the movie i want to see.mkv\"",NULL);
そして、vlcは開きますが、どちらも再現しません。
最後にNULLを書き込む代わりに、0、(char *)0、1 ...を試しました。役に立たない。助けて!!!!
execl("/home/vlc",
"/home/vlc", "/home/my movies/the movie i want to see.mkv",
(char*) NULL);
実行可能ファイルから取得されないargv[0]
を含むすべての引数を指定する必要があります。
また、最後のNULL
がchar*
にキャストされることを確認してください。
詳細はこちら: http://pubs.opengroup.org/onlinepubs/9699919799/functions/exec.html
VLC再生プロセスを実行し、それが完了したときにアプリケーションプロセスのみに制御を戻す必要があり、それ以上複雑なものがない場合は、次のものを使用できると思います。
system("The same thing you type into console");