3

我正在linux中编写ac程序。像 execv() 这样的命令需要 ac 字符串形式的路径。是否有命令以 ac 样式字符串的形式返回当前路径?

4

5 回答 5

11

getcwd()

概要

#include <unistd.h>

char *getcwd(char *buf, size_t size);

描述

getcwd()函数应将当前工作目录的绝对路径名放在 buf 指向的数组中,并返回 buf。复制到数组的路径名不应包含符号链接的组件。size参数是buf参数指向的字符数组的大小(以字节为单位)。如果buf是空指针,则 getcwd() 的行为未指定。

返回值

成功完成后,getcwd()将返回buf参数。否则,getcwd()将返回一个空指针并设置errno以指示错误。然后buf 指向的数组的内容是未定义的....

于 2008-09-05T23:25:49.330 回答
6

execv()的路径参数是您希望执行的应用程序的路径,而不是当前工作目录(将由 getcwd() 返回)或 shell 搜索路径(将由 getenv("PATH") 返回)。

根据您所做的事情,您可能会从 C 库中的 system() 函数而不是较低级别的 exec() 系列中获得更多的好处。

于 2008-09-05T23:30:19.460 回答
2

不是ANSI C:

#include <unistd.h>

char path[MAXPATHLEN];
getcwd(path, MAXPATHLEN);
printf("pwd -> %s\n", path);
于 2008-09-05T23:27:51.930 回答
0

如果路径可以是相对路径,您应该可以使用 '.' 或 './' 作为路径。我不确定它是否会起作用,但你可以尝试一下。

于 2008-09-05T23:35:22.113 回答
-2

我不是专业程序员,所以这不是一个确切的答案。

您需要做的是获取环境变量 PWD(当前工作目录)

我不确定它在哪个库中,但它是一个标准的 linux 头文件。

我会环顾四周,看看能不能找到它。

编辑:

我在想getenv()如果您还需要运行系统命令并需要位于 PATH 中的各种 bin 路径,这将有所帮助

于 2008-09-05T23:27:33.460 回答