文档库 最新最全的文档下载
当前位置:文档库 › Linux常用函数查询

Linux常用函数查询

Linux常用函数查询
Linux常用函数查询

1: 系统调用:打开一个文件

函数原型:int open(const char pathname, info flage, /* mdode_t m) 头文件:#include

#include

#include

参数:flag

1> 下面三个常量只能选用一个:

O_RDONLY, O_WRONLY, O_RDWR

2> O_CREAT :如果文件不存在,则创建此文件,选用

个参数时,必须同时指定mode参数

3> O_SYNC :最严格的同步方式,每次write操作在

数据和属性都协议时再返回

2:系统调用:改变文件的所有者

1> 函数原型:int chown(cont char *path, uid_t uid, gid_t gid) ;

int fchown(int fd, uid_t uid, gid_t gid) ;

int lchown(int fd, uid_t uid, gid_t gid) ;

2> 头文件:#include

#include

3> 参数:略

4> 返回值:略

3:系统调用:创建连接

1> 函数原型:int link(const char *existPath, const char *newPath) ;

2> 头文件:#include

3> 参数:existpath :已经存在的文件

newpath :新的文件

4> 返回值:略 4:系统调用:删除一个文件

5> 备注:如果newpath已经存在,则失败

4:系统调用:删除一个文件

1> 函数原型:int unlink(const char *path) ;

2> 头文件:#include

3> 参数:略

4> 返回值:略

5> 备注:调用的函数的结果是使得文件的inode-1,如果i_node=0

则自动删除文件数据区

5:标准函数:重命令函数

1> 函数原型:int rename(const char *oldname, const char *newname) ;

2> 头文件:#include

3> 参数:略

4> 返回值:略

6:系统调用:读连接文件内容函数

1> 函数原型:int readlink(const char *path, char *buf, int size)

2> 头文件:#include

3> 参数:略

4> 返回值:略

7:系统调用:新建一个目录

1> 函数原型:int mkdir(const char *pathname, mode_t mode) ;

2> 头文件:#include

#include

3> 参数:略

4> 返回值:略

8:系统调用:删除一个空目录

1> 函数原型:int rmdir(const char *pathname) ;

2> 头文件:#include

3> 参数:略

4> 返回值:略

9:其他函数:得到文件名最大长度函数

1> 函数原型:int pathconf(const char *relativePath, int parameters) ;

2> 头文件:#include

3> 参数:

reletivePath :相对路径,一般取‘/’

parameters :=_PC_PATH_MAX

4> 返回值:返回本系统支持的最大文件名称长度

10:系统调用:改变当前工作目录函数

1> 函数原型:int chdir(cont char *pathname) ;

2> 头文件:#include

3> 参数:略

4> 返回值:略

11:系统调用:得到的当前工作目录函数

1> 函数原型:char* getcwd(char *buf, int size) ;

2> 头文件:#include

3> 参数:

buf :存放路径名的首地址

size :指出存储空间的字节数

4> 返回值:返回当前路径的完整名称

12:系统调用:同步函数(两个)

1> 函数原型:void sync(void) ;

int fsync(int fd) ;

2> 头文件:#include

3> 参数:fd :特定的文件描述符

4> 返回值:fsync函数只有等到真正写到文件中才返回

5> 备注:

1> sync函数只是将修改过的块写入队列

2> fsync对单个文件操作,写完才返回,应用于数据库中

13:特别函数:查询某一个特定用户是否存在

1> 函数原型:passwd* getpwuid(uid_t uid) ;

passwd* getpwnam(const char *name) ;

2> 头文件:#include

#include

3> 参数:略

4> 返回值:返回一个struct passwd指针

5> 备注:可以根据一个用户的uid和name来获得这个用户的信息

14:特别函数:查询所有的用户信息

1> 函数原型:void setpwent() ;

passwd* getpwent() ;

void endpwent() ;

2> 头文件:#include

3> 参数:略

4> 返回值:略

5> 备注:

1> 可以用循环结构来处理

2> 开始前最好先要setpwent(),最后一定要endpwent()

15:特别函数:查看组用户的函数

同上 getgrgid(), getgrnam(), setgrent(), getgrent(), endgrent() ;

16:特别函数:查看主机信息

1> 函数原型:int uname(struct utsname *name) ;

2> 头文件:#include

3> 参数:把获得的东西存入struct utsname中

4> 返回值:略

17:特别函数: 获得主机名称

1> 函数原型:int gethostname(char *buf, int size) ;

2> 头文件:#include

3> 参数:略

4> 返回值:略

18:时间函数:得到当前时间

1> 函数原型:time_t time(time_t *buf) ;

2> 头文件: #include

3> 参数:buf :把得到的time_t值存入tm数据结构

4> 返回值:返回日历时间time_t

5> 备注:日历时间是一个秒数

19:特别函数:time_t和tm数据结构之间的转换

1> 函数原型:time_t mktime(tm *buf) ;

struct tm* gmtime(const time_t *ptr) ;

2> 头文件:#include

3> 参数:略

4> 返回值:略

20:特别函数:转化可视时间

1> 函数原型:char* asctime(const struct tm *ptr) ;

char* ctime(const time_t *t) ;

2> 头文件:#include

3> 参数:略

4> 返回值:略

21:特别函数:退出程序

1> 函数原型:void exit(int status) ;

void _exit(int status) ;

2> 头文件:exit --> #include

_exit --> #include

3> 参数:略

4> 返回值:略

5> 备注:

1> exit :退出时对每个文件流都进行fclose操作

2> _exit:退出,直接进入内核

22:特别函数:注册函数

1> 函数原型:int atexit( void (fun*)(void) ) ;

2> 头文件:#include

3> 参数:void (fun*) (void)

4> 返回值:略

5> 备注:

1> 函数的参数是返回值void,参数void的函数

2> 先注册的后执行,后注册的先执行

23:特别函数:和内存分配相关的四个函数

1> 函数原型:void* malloc(size_t size) ;

void* calloc(size_t nobj, size_t size) ;

void* realloc(void *ptr, size_t newsize) ;

void free(void *ptr) ;

2> 头文件:#include

3> 参数:在realloc中,newsize指的是新的空间的大小

4> 返回值:略

5> 备注:

1> realloc函数中,newsize指的是新的要申请空间的大小

2> calloc和malloc的区别是后者申请完空间后,会初始化

24:特别函数:环境变量的相关操作

1> 函数原型:char* getenv(const char *name) ;

int putenv(const char *str) ;

int setenv(const char *name, const char *value, int rewrite) ;

unsetenv(const char *name) ;

2> 头文件:#include

3> 参数:

1> rewrite != 1,现删除原来的变量

2> rewrite ==1,不删除现存定义

4> 返回值:略

25:特殊函数:保存环境函数

1> 函数原型:int setjmp(jmp_buf buffer) ;

void longjmp(jmp_buf buffer, int flag) ;

2> 头文件:#include

3> 参数:略

4> 返回值:略

5> 备注:

1> 现利用setjmp保存一个状态

2> 利用longjmp恢复保存的状态

1: 系统调用:读一个文件

函数原型:ssize_t read(int fd, void *buf, size_t size) ;

头文件:#include

参数:略

返回值:

1> < 0 :出现I/O错误

2> = 0 :达到文件结尾

3> > 0 :返回读到的实际字节数

备注:略

2:系统调用:写入一个文件

函数原型:ssize_t write(int fd, void *buf, size_t size) ;

头文件:#include

参数:略

返回值:

1> < 0 :出现I/O错误

2> > 0 :返回写入的实际字节数目

----------------------------------

注意:当返回值不等于size时,则出现I/O错误备注:略

3:系统调用:返回本进程的ID

函数原型:pid_t getpid() ;

头文件:#include

参数:无

返回值:

1> > 0 :返回本进程ID

2> < 0 :出现错误

备注:无

4:系统调用:返回本进程的组ID

函数原型:gid_t getgid() ;

头文件:#include

参数:无

返回值:

1> < 0 :出现错误

2> > 0 :返回组ID

5:系统调用:复制一个文件描述符(一个参数)

函数原型:int dup(int fd) ;

头文件:#include

参数:略

返回值:

1> < 0 :出现错误

2> >= 0 :返回一个文件描述符

备注:此函数的结果就是两个文件符指向一个相同的文件

6:系统调用:复制一个文件描述符(两个参数)

函数原型:int dup(int fd1, int fd2) ;

头文件:#include

参数:

fd1 :已知的fd

fd2 :要复制到的fd

返回值:

1> <0 :出现错误

2> >=0 :调用成功

备注:

此函数的分成三种情况:

1>若fd2已经打开,且fd2 != fd1,则先将fd2关闭

2>若fd2已经打开,且fd2 == fd1,则直接返回

3>若fd2没有打开,则直接复制

7:系统调用:获取文件属性的三个函数

函数原型:int stat(const char *pathname, stat *buf) ;

int fstat(int fd, stat *buf) ;

int lstat(int fd, stat *buf) ;

头文件:#include

#include

参数:略

返回值:

如果返回负数,则调用失败

备注:

当操作的文件是一个链接文件时

1>stat和fstat返回的是链接指向文件的属性

2>lstat返回的是链接文件本身的属性

8:系统调用:判断文件类型的几个宏(Question:参数)

头文件:(Question)

普通文件:S_ISREG()

目录文件:S_ISDIR()

链接文件:S_ISLNK()

块设备:S_ISBLK()

字符设备:S_ISCHR()

管道:S_ISFIFO()

SOCKET :S_ISSOCK()

9:系统调用:测试文件存取模式

函数原型:int access(const char *pathname, int mode)

头文件:#include

#include

#include

参数:

mode的取值情况:

---------------

1> 存在:F_OK (文件是否存在)

2> 可读:R_OK

3> 可写:W_OK

4> 执行:X_OK

返回值:

如果失败,返回一个负数

备注:

10:系统命令:置位设置-用户-ID位

chmod u+s file

11:系统结构:文件存储权限字

S_ISUID 设置-用户-ID

S_ISGID 用户-组 -ID

S_ISIVX 粘住位

S_IRUSR 用户相关

S_IWUSR

S_IXUSR

S_IRGRP 组相关

S_IWGRP

S_IXGRP

S_IROTH 其他用户相关

S_IWOTH

S_IXOTH

12:系统函数:屏蔽标记函数

函数原型:mode_t umask(mode_t masks) ;

头文件:#include

参数:要屏蔽的存储方式字(mode_t)

返回值:返回原来的屏蔽方式字

备注:

1>此函数如果出错,则不会返回

2>这是UNIX中出错不会返回的仅有的几个函数之一13:系统调用:改变文件存取模式

函数原型:int chmod(const char *pathname, mode_t mode) ;

int fchmode(int fd, mode_t mode) ;

头文件:#include

#include

参数:略

返回值:如果出错,则返回一个负数

备注:

fchmod可以设置一个已经打开文件的存储访问权限

14:系统调用:截短文件的函数

函数原型:int truncate(const char *pathname, off_t length) ;

int ftruncate(int fd, off_t length) ;

头文件:#include

#include

参数:off_t (截短到该长度)

返回值:如果失败,则返回一个负数

备注:

1>length可正可负

2>可能出现“文件空洞”

15:标准函数:设置流的缓冲类型

函数原型:int setvbuf(FILE *fstream, void *buf, int mode, size_t size 头文件:#include

参数:

buf :if buf==NULL,则由系统来分配缓存,叫做系统缓存

if buf!=NULL,则来使用分配的缓存,叫做用户缓存

size:分配的用户缓存大小

mode:

_IOFBF :I/O全缓存

_IOLBF :I/O行缓存

_IONBF :I/O不缓存

参数:如果失败,则返回一个负数

16:标准函数:缓冲流

函数原型:int fflush(FILE *fstream) ;

头文件:#include

参数:

if fstream == NULL,则强制刷新全部流

if fstream != NULL,则刷新特定流

返回值:如果失败,则返回一个负数

17:标准函数:打开文件的三个函数

函数原型:FILE* fopen(const char *pathname, char *mode) ;

FILE* fropen(const char *pathname, char *mode) ;

FILE* fdopen(int fd, char *mode) ;

头文件: #include

参数:略

返回值:略

备注:

1> fopen :路径 FILE*

2> fropen :重新打开一个文件

3> fdopen :把FILE* 和一个fd联系起来

I/O的几种type类型

1> r :为读而打开

2> r+ :为读和写而打开

3> w :使文件长度称为0,或者为写而创建文件

4> w+ :使文件长度成为0,为读和写而打开

5> a :添加,为在文件尾写而打开或者为了写而创建文件

6> a+ :为在文件尾读和写而打开或创建

19:标准函数:关闭一个文件流

函数原型:int fclose(FILE* fstream) ;

头文件:#include

参数:略

返回值:如果出错,返回一个负数

备注:系统在关闭一个文件时,会自动刷新该文件相关的流

1> 输入数据:全部被抛弃

2> 输出数据:全部被刷新

20:标准函数:读取一个字符(三个)

函数原型:int getchar() ;

int getc(FILE *fstream) ;

int fgetc(FILE *fstream) ;

头文件:#include

参数:略

返回值:

1> EOF :文件结束

2> >=0 :读取的字符的ASCII码

3> <0 :出现错误

备注:

1>getc和fgetc的区别

getc是一个宏

2>返回值一定要用int类型,不是char类型

3>三个函数遇到文件结束或者I/O错误时,都会返回负数,这

个时候应该用两个函数来判断是那种情况:

feof(FILE *fstream) ; // 是否文件结尾?

ferror(FILE *fstream) ; // 是否出现错误?

21:标准函数:测试是否到达一个文件流的结束

函数原型:int feof(FILE *fstream) ;

头文件:#include

参数:略

返回值:略

22:标准函数:测试一个文件流是否出现错误

函数原型:int ferror(FILE *fstream) ;

头文件:#include

参数:略

返回值:略

23:标准函数:字符回送函数

函数原型:int ungetc(int c, FILE *fsteam) ;

头文件:#include

参数:略

返回值:

1>如果回送成功,则返回字符c

2>如果失败,则返回一个负数

24:标准函数:字符输出函数

函数原型:int putchar(int c) ;

int putc(int c, FILE *fstream) ;

int fputc(int c, FILE *fstream) ;

头文件:#include

参数:略

返回值:

如果失败,则返回一个负数

备注:其他相关事项和put类型相同

25:标准函数:每次一行I/O的输入函数

函数原型:int fgets(const char *buf, size_t size, FILE *fstream) ;

头文件:#include

参数:略

返回值:

1>如果成功,返回实际写入的字节数

2>如果返回值和size不相等,则出现错误

26:标准函数:每次一行I/O的输出函数

函数原型:int fputs(const char *buf, FILE *fstream) ;

头文件:#include

参数:略

返回值:

1> >=0 :返回实际读取的字节数

2> <0 :说明达到文件末尾或者出现错误

备注:

1>fgets函数中,如果缓存大小是size,则最多可以存放n-1

个字符(包括‘\n’符号)

2>fputs函数中,系统推荐在buf[size-2]字符=’\n’,但是

并不强制这样做

27:标准函数:读二进制文件或者数据类型

函数原型:int fread(void *buf, size_t objsize, int objnum, FILE *fs 头文件:#include

参数:

buf :缓存首地址

objsize :一个字节所占的字节数目

objnum :对象的数目

返回值:

1> >=0 :返回读到的对象数目

2> <0 :到达文件终止或者出现错误

备注:此函数可对数据操作或者二进制文件进行相关操作

28:标准函数:写二进制文件或者数据类型

函数原型:int fwrite(const void *buf,size_t size, int num, FILE *f) 头文件:#include

参数:

buf :缓存首地址

objsize :一个字节所占的字节数目

num :要写入的字节数目

返回值:如果返回值和num不相等,那么就出现了错误

备注:fread和fwrite函数是有局限性的,因为各种操作系统同一种

类型所占的空间大小也是有区别的

29:标准函数:定位流函数

函数原型:int fseek(FILE *fstream, long offset, int whence) ;

头文件:#include

参数:

offset :偏移量

whence :从什么地方开始(SET,END,CURSOR)

返回值:如果定位失败,则返回一个负数

30:标准函数:重置文件流

函数原型:int rewind(FILE *fstream)

头文件:#include

参数:略

返回值:略

31:标准函数:建立临时文件(两个)

函数原型:char* tmpnam(char *str) ;

FILE* tmpfile(void) ;

头文件:#include

参数:

if (str == NULL)

路径名会存储在str中

if (str != NULL)

路径名存储在系统的静态空间里面

返回值:

tmpnam :返回临时文件的路径名

tmpfile :返回临时文件的指针

-------------- From : Advanced Programming In UNIX Environment (1-5)----- ------

相关文档