在linux下,估计你经常使用pwd这个命令,这个命令就是打印当前的工作路径,即print working directroy, 今天我们也来c语言实现这个命令。
要实现这个功能,需要用到下面的一个系统调用:
#include
<
unistd.h
>
char * getcwd ( char * buf , size_t size ) ;
char * getcwd ( char * buf , size_t size ) ;
该系统调用返回当前的工作目录的绝对路径,绝对路径的值保留在size大小的buf中,如果这个缓冲区太小,则返回NULL,并且errno被设置为ERANGE, 如果buf等于NULL,则行为是未定义的。如果函数调用成功,返回值是buf, 如果调用失败,则返回NULL,失败原因可以查看errno。
另外,还要用到一个函数:
#include
<
string.h
>
char * strerror ( int errnum ) ;
char * strerror ( int errnum ) ;
该函数吧错误代码errnum转换为错误描述字符串并返回。
程序很简单,完整代码如下:
下载:
pwd.c
- /* pwd.c */
- #include <unistd.h>
- #include <stdio.h>
- #include <string.h>
- #include <errno.h>
- #define BUF_SIZ 2048
- int main()
- {
- char buf[BUF_SIZ];
- if ( getcwd(buf, BUF_SIZ) )
- printf("%s/n", buf);
- else
- fprintf(stderr, "error occured : %s", strerror(errno));
- exit(0);
- }