如何使用 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()
会给你当前目录。
我已经阅读了 @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()
会给你当前目录。