1. ホーム
  2. c

[解決済み] C言語でexecl()を適切な引数で呼び出すには?

2022-03-06 02:45:29

質問

私はvlc(ビデオを再生するプログラム)を持っています。 シェルで入力すると

/home/vlc "/home/my movies/the movie i want to see.mkv"./home/vlc "/home/my movies/the movie i want to see.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