编写一个程序,就像C中的命令行一样

时间:2015-09-16 02:31:38

标签: c unix

因此,根据我自己发现的内容,我知道我需要使用_snprintf_snprintf_s,但我无法弄清楚如何使用fork()从网上的任何例子正确。它应该让我基本上运行命令行的东西,但我不明白它需要的参数。就像我想要运行execvp()一样,如何将其添加到execvp()?然后就是ls -a没有返回的问题。我该如何处理?

1 个答案:

答案 0 :(得分:3)

首先,exec()没有返回,因为它导致进程执行程序被exec()编译的任何程序替换。也就是说,如果您在ls之后exec() fork()运行ls,则exec()的PID将与调用exec()的PID相同。那是exec()没有创建一个新进程,因此无法返回,因为调用它的程序中的所有内存和代码都被有效地删除并替换为ls -a编辑的内容。

假设execvp()位于ls

,请/binconst 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