题
我正在linux下写一个c程序。像 execv() 这样的命令需要 C 字符串形式的路径。是否有一个命令将以 c 风格字符串的形式返回当前路径?
解决方案
概要
#include <unistd.h> char *getcwd(char *buf, size_t size);
描述
这 获取cwd() 函数应将当前工作目录的绝对路径名放入由 buf,并返回buf. 。复制到数组的路径名不应包含符号链接的组件。这 尺寸 参数是指向的字符数组的大小(以字节为单位) 缓冲区 争论。如果 缓冲区 是一个空指针,getcwd() 的行为未指定。
返回值
成功完成后, 获取cwd() 应返回 缓冲区 争论。否则, 获取cwd() 应返回一个空指针并设置 错误号 以指示错误。指向的数组的内容 缓冲区 然后是未定义的......
其他提示
这 小路 execv() 的参数是您要执行的应用程序的路径,而不是当前工作目录(将由 getcwd() 返回)或 shell 搜索路径(将由 getenv("PATH") 返回)。
根据您正在做的事情,您可能会从 C 库中的 system() 函数而不是较低级别的 exec() 系列中获得更多的好处。
这是 不是 ANSI C:
#include <unistd.h>
char path[MAXPATHLEN];
getcwd(path, MAXPATHLEN);
printf("pwd -> %s\n", path);
如果路径可以是相对路径,则应该能够使用'。或'./'作为路径。我不确定它是否有效,但你可以尝试一下。
我不是专业程序员,所以这不是一个确切的答案。
您需要做的是获取环境变量 PWD(当前工作目录)
我不确定它在哪个库中,但它是一个标准的 Linux 头文件。
我会环顾四周,看看是否能找到它。
编辑:
我在想,获取环境() 如果您还需要运行系统命令并且需要位于 PATH 中的各种 bin 路径,这将有所帮助
不隶属于 StackOverflow