当前位置: 技术问答>linux和unix
如何在linux下实现GetFullPathName
来源: 互联网 发布时间:2016-08-10
本文导语: 请教如何在linux下实现GetFullPathName的相应功能 | 办法有点笨,但是确实可以使用: /*- * $Id$ * * $Log$ */ /** * @file fullpath.c * @brief get full path name */ ...
请教如何在linux下实现GetFullPathName的相应功能
|
办法有点笨,但是确实可以使用:
/*-
* $Id$
*
* $Log$
*/
/**
* @file fullpath.c
* @brief get full path name
*/
#include
#include
#include
#include
#include
char *fullpath(char *buf, size_t size, const char *path)
{
char pathname[PATH_MAX + 1];
char command[PATH_MAX * 2 + 1];
FILE *fp;
size_t len;
if (!access(path, F_OK)) {
snprintf(command, sizeof(command), "cd `dirname %s` && pwd", path);
fp = popen(command, "r");
fgets(pathname, sizeof(pathname), fp);
snprintf(buf, size, "%s", pathname);
len = strlen(buf);
if (len >= 1 && (buf[len - 1] == 'r' || buf[len - 1] == 'n'))
buf[len - 1] = 0;
if (len >= 2 && (buf[len - 2] == 'r' || buf[len - 2] == 'n'))
buf[len - 2] = 0;
pclose(fp);
} else {
buf[0] = 0;
}
return buf;
}
int
main(int argc, char *argv[])
{
int i;
char buf[PATH_MAX + 1];
for (i = 1; i