我已经从@nos读到了关于如何实现execlp命令的以下答案,但是我无法使用execlp专门为ls -l $pwd
运行相同的操作。我试过了两个
execlp("ls","ls", "-l", "$pwd", (char *)NULL);
和
execlp("ls","ls", "-l", "pwd", (char *)NULL);
但似乎没有任何效果。这个思考过程中的任何方向都会非常有用
感谢。
答案 0 :(得分:1)
那些$...
变量属于shell
,不属于操作系统内部。在shell中键入这些变量时,shell会将它们转换为实际值,然后调用系统调用。
在C程序中,您需要自己完成:
#include <unistd.h>
int main() {
char *cwd = getcwd(NULL, 0);
execlp("ls","ls", "-l", cwd, (char *)NULL);
}
getcwd()
将为您提供当前目录。