我正在linux中构建自己的伪shell。使用execv在linux中使用'./'命令
我使用execv
来运行通常可以由linux shell完成的命令。
我有大多数的命令工作,但我不知道如何使用'./'命令使用execv
来运行其他程序。有谁知道如何做到这一点?
任何建议都会有所帮助。
我正在linux中构建自己的伪shell。使用execv在linux中使用'./'命令
我使用execv
来运行通常可以由linux shell完成的命令。
我有大多数的命令工作,但我不知道如何使用'./'命令使用execv
来运行其他程序。有谁知道如何做到这一点?
任何建议都会有所帮助。
./不是命令,而是当前目录的路径。这听起来像你应该使用execvp(file, argv)
,而不是execv(path, argv)
。
更新后添加:更具体一点,如果文件名包含'/',execvp不会搜索PATH。这工作,例如:
#include <unistd.h>
#include <stdio.h>
int main(void)
{
execvp("./hello.sh", NULL);
}
我在当前目录hello.sh
,与gcc test.c
编译的代码,跑./a.out
和它打印的“Hello World”。 ''不在我的PATH中。
'。/'不是一个命令,而是一个相对文件路径? – isedev