我正在linux中编写ac程序。像 execv() 这样的命令需要 ac 字符串形式的路径。是否有命令以 ac 样式字符串的形式返回当前路径?
5 回答
概要
#include <unistd.h> char *getcwd(char *buf, size_t size);
描述
getcwd()函数应将当前工作目录的绝对路径名放在 buf 指向的数组中,并返回 buf。复制到数组的路径名不应包含符号链接的组件。size参数是buf参数指向的字符数组的大小(以字节为单位)。如果buf是空指针,则 getcwd() 的行为未指定。
返回值
成功完成后,getcwd()将返回buf参数。否则,getcwd()将返回一个空指针并设置errno以指示错误。然后buf 指向的数组的内容是未定义的....
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 头文件。
我会环顾四周,看看能不能找到它。
编辑:
我在想getenv()如果您还需要运行系统命令并需要位于 PATH 中的各种 bin 路径,这将有所帮助