我正在linux下写一个c程序。像 execv() 这样的命令需要 C 字符串形式的路径。是否有一个命令将以 c 风格字符串的形式返回当前路径?

有帮助吗?

解决方案

获取cwd():

概要

#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 路径,这将有所帮助

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top