28

シェルに入力すると、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 .... を試してみましたが、役に立ちませんでした。ヘルプ!!!!

4

2 に答える 2

46
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

于 2012-09-26T07:43:13.040 に答える
0

VLC再生プロセスを実行するだけで、実行が完了したときにアプリケーションプロセスに制御を戻すだけで、それ以上複雑なことは何もない場合は、次のように使用できると思います。

system("The same thing you type into console");

于 2012-09-26T07:56:53.970 に答える