web-dev-qa-db-ja.com

適切な引数でCでexecl()を呼び出す方法は?

シェルを入力すると、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 ...を試しました。役に立たない。助けて!!!!

18
Matias Morant
execl("/home/vlc", 
  "/home/vlc", "/home/my movies/the movie i want to see.mkv", 
  (char*) NULL);

実行可能ファイルから取得されないargv[0]を含むすべての引数を指定する必要があります。

また、最後のNULLchar*にキャストされることを確認してください。

詳細はこちら: http://pubs.opengroup.org/onlinepubs/9699919799/functions/exec.html

32
AProgrammer

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

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

0
Erik Kaju