因此,根据我自己发现的内容,我知道我需要使用_snprintf
和_snprintf_s
,但我无法弄清楚如何使用fork()
从网上的任何例子正确。它应该让我基本上运行命令行的东西,但我不明白它需要的参数。就像我想要运行execvp()
一样,如何将其添加到execvp()
?然后就是ls -a
没有返回的问题。我该如何处理?
答案 0 :(得分:3)
首先,exec()
没有返回,因为它导致进程执行程序被exec()
编译的任何程序替换。也就是说,如果您在ls
之后exec()
fork()
运行ls
,则exec()
的PID将与调用exec()
的PID相同。那是exec()
没有创建一个新进程,因此无法返回,因为调用它的程序中的所有内存和代码都被有效地删除并替换为ls -a
编辑的内容。
假设execvp()
位于ls
/bin
与const char *file = "/bin/ls";
const char *arg1 = "ls";
const char *arg2 = "-a";
const char **argv = {arg1, arg2, NULL};
execvp(file, argv);
一同投放
$ vim ~/.vimrc
...
let NERDTreeWinPos=1