Man page - basename(3)

Packages contains this manual

Available languages:

en fr es pl ja ru ro zh_TW zh_CN

Manual

DIRNAME

NAME
總 覽
描 述
示 例 (EXAMPLE)
返 回 值 (RETURN VALUE)
BUGS
遵 循 (CONFORMING TO)
另 見 (SEE ALSO)
[中 文 版 維 護 人 ]
[中 文 版 最 新 更 新 ]
《 中 國 Linux論 壇 man手 冊 頁 翻 譯 計 劃 》


NAME

dirname, basename - 解 析 路 徑 組 成 部 分

總 覽

#include <libgen.h>

char *dirname(char *path );
char *basename(char
*path );

描 述

dirname basename 把 以 null 結 尾 的 路 徑 名 分 解 為 目 錄 和 檔 名 . 一 般 情 況 下 , dirname 返 回 路 徑 名 的 前 面 部 分 , 直 到 (但 不 包 括 ) 最 後 一 個 ’/’, 而 basename 則 返 回 最 後 一 個 ’/’ 後 面 的 內 容 . 如 果 路 徑 名 以 ’/’ 結 尾 , 該 ’/’ 被 認 為 不 是 路 徑 名 的 一 部 分 .

如 果 路 徑 名 path 不 包 含 斜 槓 ’/’, dirname 返 回 字 串 ".", 而 basename 返 回 path 的 副 本 . 如 果 路 徑 名 path 是 "/", 則 dirname basename 均 返 回 "/". 如 果 路 徑 名 path 是 NULL 指 標 或 指 向 空 串 , 則 dirname basename 均 返 回 ".".

dirname 返 回 的 字 串 , "/", 和 basename 返 回 的 字 串 連 線 起 來 , 能 夠 產 生 一 個 完 整 的 路 徑 名 .

無 論 dirname 還 是 basename 都 有 可 能 更 改 path 的 內 容 , 因 此 如 果 需 要 保 護 原 有 路 徑 名 , 應 該 傳 送 副 本 作 為 引 數 . 此 外 , dirname basename 返 回 的 指 標 可 能 指 向 一 塊 靜 態 分 配 的 記 憶 體 , 會 被 下 次 呼 叫 覆 蓋 .

下 面 的 例 子 (摘 自 SUSv2) 展 示 了 對 於 不 同 的 路 徑 名 , dirname basename 返 回 的 字 串 :

path

dirname

basename

"/usr/lib"

"/usr"

"lib"

"/usr/"

"/"

"usr"

"usr"

"."

"usr"

"/"

"/"

"/"

"."

"."

"."

".."

"."

".."

示 例 (EXAMPLE)

char *dirc, *basec, *bname, *dname;
char *path = "/etc/passwd";

dirc = strdup(path);
basec = strdup(path);
dname = dirname(dirc);
bname = basename(basec);
printf("dirname=%s, basename=%s\n", dname, bname);
free(dirc);
free(basec);

返 回 值 (RETURN VALUE)

dirname basename 均 返 回 以 null 結 尾 的 字 串 的 指 標 .

BUGS

在 glibc 的 各 個 版 本 中 , 直 到 (幷 包 括 ) 2.2.1, dirname 無 法 正 確 處 理 以 ’/’ 字 元 結 尾 的 路 徑 名 . 如 果 引 數 是 NULL 指 標 , 他 還 會 產 生 段 衝 突 (segmentation violation).

遵 循 (CONFORMING TO)

SUSv2

另 見 (SEE ALSO)

dirname (1), basename (1)

[中 文 版 維 護 人 ]

徐 明 <xuming@users.sourceforge.net>

[中 文 版 最 新 更 新 ]

2003/05/13

《 中 國 Linux論 壇 man手 冊 頁 翻 譯 計 劃 》

http://cmpp.linuxforum.net

本 頁 面 中 文 版 由 中 文 man 手 冊 頁 計 劃 提 供 。
中 文 man 手 冊 頁 計 劃 : https://github.com/man-pages-zh/manpages-zh