28

如果我输入 shell,我有 vlc(再现视频的程序):

/home/vlc "/home/我的电影/我想看的电影.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);

相当于在 shell 中输入:

/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]不是从可执行文件中获取的。

还要确保 finalNULL被强制转换为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 回答