realpath 子例程

用途

解析路径名。

标准 C 库 (libc.a)

语法

#include <stdlib.h>

char *realpath (const char *file_name, char *resolved_name)

描述

realpath 子例程在 file_name 中执行文件名扩展和路径名解析,并将其存储在 resolved_name 中。

realpath 子例程可以处理相对路径名和绝对路径名。 对于绝对路径名和相对路径名, realpath 子例程返回已解析的绝对路径名。

resolved_name 指向的字符必须足以包含完全解析的路径名。 PATH_MAX (在 limits.h 头文件中定义) 的值可用作相应的数组大小。

返回值

成功完成时, realpath 子例程将返回指向已解析名称的指针。 否则,它将返回空指针,并设置 errno 以指示错误。 如果 realpath 子例程迂到错误,那么未定义 resolved_name 的内容。

错误代码

在以下情况下, realpath 子例程失败并将 errno 设置为:

表 1. 错误代码
描述
EACCES 对路径名的组件的读取或搜索许可权被拒绝。
EINVAL 文件名resolved_name 是空指针。
ELOOP 在转换 文件名时迂到过多符号链接。
ENAMETOOLONG file_name resolved_name 的长度超过 PATH_MAX ,或者路径名组件的长度超过 NAME_MAX。
ENOENT 文件名 参数不存在,或指向空字符串。
ENOTDIR 前缀为 文件名 的组件不是目录。

在下列情况下, realpath 子例程可能会失败:

表 2。 realpath 条件
描述
ENOMEM 没有足够的存储空间可用。