如何使用正确的参数调用C中的execl()?

如果我输入一个shell,我有vlc(重现video的程序):

/ home / vlc“/ home / my movies /我想看的电影.mkv”

它打开了一个再现电影。

但是,当我运行以下程序时:

#include  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 ….没有用。 救命!!!!

 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

如果你只是需要执行你的VLC播放过程并且只在完成后将控制权交还给你的应用程序进程并且没有更复杂的东西,那么我想你可以只使用:

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