execl 找不到 vim

execl failing to find vim

在 Linux 上的 C 程序中,我分叉了一个子进程并在文件上调用 vim。该行是

execl(editor,path,NULL);

其中 editor 是指向 "vim"const char*path 是指向 "../grr/engine/nfaRuntime.c"const char*

在strace下,我看到了

[pid  2022] execve("vim", ["../grr/engine/nfaRuntime.c"], 0x7ffc32f38ea8 /* 28 vars */) = -1 ENOENT (No such file or directory)

但是,vim 安装在我的计算机上(在 PATH 内)并且指定的文件确实存在。我也有读取权限。我已经通过 getcwd 确认我的程序在 grr 目录中 运行。

execl 不搜索 PATH 给出的路径。 execlp 确实如此。