Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1614641
  • 博文数量: 441
  • 博客积分: 20087
  • 博客等级: 上将
  • 技术积分: 3562
  • 用 户 组: 普通用户
  • 注册时间: 2006-06-19 15:35
文章分类

全部博文(441)

文章存档

2014年(1)

2012年(1)

2011年(8)

2010年(16)

2009年(15)

2008年(152)

2007年(178)

2006年(70)

分类: C/C++

2008-04-26 08:36:30

在linux下,估计你经常使用pwd这个命令,这个命令就是打印当前的工作路径,即print working directroy, 今天我们也来c语言实现这个命令。
要实现这个功能,需要用到下面的一个系统调用:

#include <unistd.h>
 
char *getcwd(char *buf, size_t size);

该系统调用返回当前的工作目录的绝对路径,绝对路径的值保留在size大小的buf中,如果这个缓冲区太小,则返回NULL,并且errno被设置 为ERANGE, 如果buf等于NULL,则行为是未定义的。如果函数调用成功,返回值是buf, 如果调用失败,则返回NULL,失败原因可以查看errno。

另外,还要用到一个函数:

#include <string.h>
 
char *strerror(int errnum);

该函数吧错误代码errnum转换为错误描述字符串并返回。

程序很简单,完整代码如下:

下载:
  1. /* pwd.c */
  2. #include <unistd.h>
  3. #include <stdio.h>
  4. #include <string.h>
  5. #include <errno.h>
  6.  
  7. #define BUF_SIZ    2048
  8. int main()
  9. {
  10.     char buf[BUF_SIZ];   
  11.    
  12.     if ( getcwd(buf, BUF_SIZ) )
  13.         printf("%s\n", buf);
  14.     else
  15.         fprintf(stderr, "error occured : %s", strerror(errno));
  16.     exit(0);
  17. }
阅读(1021) | 评论(2) | 转发(0) |
给主人留下些什么吧!~~

chinaunix网友2009-02-17 17:09:59

你忽悠人了哇,我以为是你自己用opendir和readdir来实现的pwd哦,原来用getcwd实现。貌似你这样感觉有点欺骗老百姓哈~

chinaunix网友2009-02-17 17:09:59

你忽悠人了哇,我以为是你自己用opendir和readdir来实现的pwd哦,原来用getcwd实现。貌似你这样感觉有点欺骗老百姓哈~