我正在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