1. getcwd 获取当前工作目录:
UNIX C函数。
相关函数:get_current_dir_name, getwd, chdir
头文件:#include <unistd.h>
定义函数:char * getcwd(char * buf, size_t size);
函数说明:getcwd()会将当前的工作目录绝对路径复制到参数buf 所指的内存空间,参数size 为buf 的空间大小。
注:
1、在调用此函数时,buf 所指的内存空间要足够大。若工作目录绝对路径的字符串长度超过参数size 大小,则返回NULL,errno 的值则为ERANGE。
2、倘若参数buf 为NULL,getcwd()会依参数size 的大小自动配置内存(使用malloc()),如果参数size 也为0,则getcwd()会依工作目录绝对路径的字符串程度来决定所配置的内存大小,进程可以在使用完次字符串后利用free()来释放此空间。
返回值:执行成功则将结果复制到参数buf 所指的内存空间, 或是返回自动配置的字符串指针. 失败返回NULL,错误代码存于errno.
范例
#include <unistd.h>
main()
{
char buf[80];
getcwd(buf, sizeof(buf));
printf("current working directory : %s\n", buf);
}
执行:
current working directory :/tmp
2.stat()
在sys/stat.h中还定义了更多相关的函数
The following macros shall be provided to test whether a file is of the specified type. The value m supplied to the macros is the value of st_mode from a stat structure. The macro shall evaluate to a non-zero value if the test is true; 0 if the test is false.
S_ISBLK(m):Test for a block special file.
S_ISCHR(m):Test for a character special file.
S_ISDIR(m):Test for a directory.
S_ISFIFO(m):Test for a pipe or FIFO special file.
S_ISREG(m):Test for a regular file.
S_ISLNK(m):Test for a symbolic link.
S_ISSOCK(m):Test for a socket.
4.文件类型:
File type:
S_IFMT:Type of file.
S_IFBLK:Block special.
S_IFCHR:Character special.
S_IFIFO:FIFO special.
S_IFREG:Regular.
S_IFDIR:Directory.
S_IFLNK:Symbolic link.
S_IFSOCK:Socket.
File mode bits:
S_IRWXU:Read, write, execute/search by owner.
S_IRUSR:Read permission, owner.
S_IWUSR:Write permission, owner.
S_IXUSR:Execute/search permission, owner.
S_IRWXG:Read, write, execute/search by group.
S_IRGRP:Read permission, group.
S_IWGRP:Write permission, group.
S_IXGRP:Execute/search permission, group.
S_IRWXO:Read, write, execute/search by others.
S_IROTH:Read permission, others.
S_IWOTH:Write permission, others.
S_IXOTH:Execute/search permission, others.
S_ISUID:Set-user-ID on execution.
S_ISGID:Set-group-ID on execution.
S_ISVTX:[XSI]
The bits defined by S_IRUSR, S_IWUSR, S_IXUSR, S_IRGRP, S_IWGRP, S_IXGRP, S_IROTH, S_IWOTH, S_IXOTH, S_ISUID, S_ISGID, [XSI]
S_IRWXU is the bitwise-inclusive OR of S_IRUSR, S_IWUSR, and S_IXUSR.
S_IRWXG is the bitwise-inclusive OR of S_IRGRP, S_IWGRP, and S_IXGRP.
S_IRWXO is the bitwise-inclusive OR of S_IROTH, S_IWOTH, and S_IXOTH.