如何使用 execlp 使 'ls -l $pwd' 工作?

How to get 'ls -l $pwd' working using execlp?

我已经阅读了 @nos 关于如何执行 execlp 命令的以下回答,但我无法 运行 使用 execlp 专门针对 ls -l $pwd 执行相同的操作。我都试过了 execlp("ls","ls", "-l", "$pwd", (char *)NULL);execlp("ls","ls", "-l", "pwd", (char *)NULL); 但似乎没有任何效果。这个思考过程中的任何方向都会非常有帮助

谢谢。

那些$...变量属于shell不属于 OS内部。当在 shell 中键入此类变量时,shell 会将它们转换为实际值,然后调用系统调用。

C程序中,需要自己动手:

#include <unistd.h>

int main() {
    char *cwd = getcwd(NULL, 0);
    execlp("ls","ls", "-l", cwd, (char *)NULL);
}

getcwd() 会给你当前目录。