【问题标题】:How to get 'ls -l $pwd' working using execlp?如何使用 execlp 让 'ls -l $pwd' 工作?
【发布时间】:2018-02-03 19:09:12
【问题描述】:

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

谢谢。

【问题讨论】:

  • 如果你想在C程序中使用环境变量,你需要调用getenv

标签: c linux exec


【解决方案1】:

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

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

#include <unistd.h>

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

getcwd() 会给你当前目录。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-17
    • 2018-05-31
    • 1970-01-01
    • 2011-01-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多