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
确实如此。
在 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
确实如此。