77范文网 - 专业文章范例文档资料分享平台

Linux系统API函数手册(2)

来源:网络收集 时间:2019-03-10 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:或QQ: 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

8、fcntl(文件描述词操作) 头文件

1 #include 2 #include

定义函数

1 int fcntl(int fd , int cmd); 2 int fcntl(int fd,int cmd,long arg); 3 int fcntl(int fd,int cmd,struct flock * lock);

函数说明

fcntl()用来操作文件描述词的一些特性。参数fd代表欲设置的文件描述词,参数cmd代表欲操作的指令。 有以下几种情况:

F_DUPFD用来查找大于或等于参数arg的最小且仍未使用的文件描述词,并且复制参数fd的文件描述词。执行成功则返回新复制的文件描述词。请参考 dup2()。F_GETFD取得close-on-exec旗标。若此旗标的FD_CLOEXEC位为0,代表在调用exec()相关函数时文件将不会关闭。 F_SETFD 设置close-on-exec 旗标。该旗标以参数arg 的FD_CLOEXEC位决定。 F_GETFL 取得文件描述词状态旗标,此旗标为open()的参数flags。

F_SETFL 设置文件描述词状态旗标,参数arg为新旗标,但只允许O_APPEND、O_NONBLOCK和O_ASYNC位的改变,其他位的改变将不受影响。 F_GETLK 取得文件锁定的状态。

F_SETLK 设置文件锁定的状态。此时flcok 结构的l_type 值必须是F_RDLCK、F_WRLCK或F_UNLCK。如果无法建立锁定,则返回-1,错误代码为EACCES 或EAGAIN。

F_SETLKW F_SETLK 作用相同,但是无法建立锁定时,此调用会一直等到锁定动作成功为止。若在等待锁定的过程中被信号中断时,会立即返回-1,错误代码为EINTR。参数lock指针为flock 结构指针,定义如下

1 struct flcok 2 {

3 short int l_type; /* 锁定的状态*/ 4 short int l_whence;/*决定l_start位置*/ 5 off_t l_start; /*锁定区域的开头位置*/ 6 off_t l_len; /*锁定区域的大小*/ 7 pid_t l_pid; /*锁定动作的进程*/ 8 };

l_type 有三种状态:

F_RDLCK 建立一个供读取用的锁定 F_WRLCK 建立一个供写入用的锁定 F_UNLCK 删除之前建立的锁定 l_whence 也有三种方式:

SEEK_SET 以文件开头为锁定的起始位置。 SEEK_CUR 以目前文件读写位置为锁定的起始位置 SEEK_END 以文件结尾为锁定的起始位置。 返回值

成功则返回0,若有错误则返回-1,错误原因存于errno. 9、fgets(由文件中读取一字符串) 头文件

1 include

定义函数

1 char * fgets(char * s,int size,FILE * stream);

函数说明

fgets()用来从参数stream所指的文件内读入字符并存到参数s所指的内存空间,直到出现换行字符、读到文件尾或是已读了size-1个字符为止,最后会加上NULL作为字符串结束。 返回值

gets()若成功则返回s指针,返回NULL则表示有错误发生。 10、fputs(将一指定的字符串写入文件内) 头文件

1 #include

定义函数

1 int fputs(const char * s,FILE * stream);

函数说明

fputs()用来将参数s所指的字符串写入到参数stream所指的文件内。 返回值

若成功则返回写出的字符个数,返回EOF则表示有错误发生。

(二)内存控制篇

1、calloc(配置内存空间) 头文件

1 #include

定义函数

1 void *calloc(size_t nmemb,size_t size);

函数说明

calloc()用来配置nmemb个相邻的内存单位,每一单位的大小为size,并返回指向第一个元素的指针。这和使用下列的方式效果相同:malloc(nmemb*size);不过,在利用calloc()配置内存时会将内存内容初始化为0。 返回值

若配置成功则返回一指针,失败则返回NULL。 2、free(释放原先配置的内存) 头文件

1 #include

定义函数

1 void free(void *ptr);

函数说明

参数ptr为指向先前由malloc()、calloc()或realloc()所返回的内存指针。调用free()后ptr所指的内存空间便会被收回。假若参数ptr所指的内存空间已被收回或是未知的内存地址,则调用free()可能会有无法预期的情况发生。若参数ptr为NULL,则free()不会有任何作用。 3、malloc(配置内存空间) 头文件

1 #include

定义函数

1 void * malloc(size_t size);

函数说明

malloc()用来配置内存空间,其大小由指定的size决定。 返回值

若配置成功则返回一指针,失败则返回NULL。 范例

void p = malloc(1024); /*配置1k的内存*/

(三)进程操作篇

1、execl(执行文件) 头文件

1 #include

定义函数

1 int execl(const char * path,const char * arg,....);

函数说明

execl()用来执行参数path字符串所代表的文件路径,接下来的参数代表执行该文件时传递过去的argv(0)、argv[1]……,最后一个参数必须用空指针(NULL)作结束。 返回值

如果执行成功则函数不会返回,执行失败则直接返回-1,失败原因存于errno中。 2、execlp(从PATH 环境变量中查找文件并执行) 头文件

#include

定义函数

1 int execlp(const char * file,const char * arg,……);

函数说明

execlp()会从PATH 环境变量所指的目录中查找符合参数file的文件名,找到后便执行该文件,然后将第二个以后的参数当做该文件的argv[0]、argv[1]……,最后一个参数必须用空指针(NULL)作结束。 返回值

如果执行成功则函数不会返回,执行失败则直接返回-1,失败原因存于errno 中。 错误代码 参考execve()。 3、execv(执行文件) 头文件

1 #include

定义函数

1 int execv (const char * path, char * const argv[ ]);

函数说明

execv()用来执行参数path字符串所代表的文件路径,与execl()不同的地方在于execve()只需两个参数,第二个参数利用数组指针来传递给执行文件。 返回值

如果执行成功则函数不会返回,执行失败则直接返回-1,失败原因存于errno 中。 错误代码

请参考execve()。 4、execve(执行文件) 头文件

1 #include

定义函数

1 int execve(const char * filename,char * const argv[ ],char * const envp[ ]);

函数说明

execve()用来执行参数filename字符串所代表的文件路径,第二个参数系利用数组指针来传递给执行文件,最后一个参数则为传递给执行文件的新环境变量数组。 返回值

如果执行成功则函数不会返回,执行失败则直接返回-1,失败原因存于errno 中。 错误代码 EACCES

1. 欲执行的文件不具有用户可执行的权限。

2. 欲执行的文件所属的文件系统是以noexec 方式挂上。 3.欲执行的文件或script翻译器非一般文件。 EPERM

1.进程处于被追踪模式,执行者并不具有root权限,欲执行的文件具有SUID 或SGID 位。 2.欲执行的文件所属的文件系统是以nosuid方式挂上,欲执行的文件具有SUID 或SGID 位元,但执行者并不具有root权限。 E2BIG 参数数组过大

ENOEXEC 无法判断欲执行文件的执行文件格式,有可能是格式错误或无法在此平台执行。 EFAULT 参数filename所指的字符串地址超出可存取空间范围。 ENAMETOOLONG 参数filename所指的字符串太长。 ENOENT 参数filename字符串所指定的文件不存在。 ENOMEM 核心内存不足

ENOTDIR 参数filename字符串所包含的目录路径并非有效目录 EACCES 参数filename字符串所包含的目录路径无法存取,权限不足 ELOOP 过多的符号连接

ETXTBUSY 欲执行的文件已被其他进程打开而且正把数据写入该文件中 EIO I/O 存取错误

ENFILE 已达到系统所允许的打开文件总数。

EMFILE 已达到系统所允许单一进程所能打开的文件总数。 EINVAL 欲执行文件的ELF执行格式不只一个PT_INTERP节区 EISDIR ELF翻译器为一目录 ELIBBAD ELF翻译器有问题。 5、execvp(执行文件) 头文件

1 #include

定义函数

1 int execvp(const char *file ,char * const argv []);

函数说明

百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库Linux系统API函数手册(2)在线全文阅读。

Linux系统API函数手册(2).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.77cn.com.cn/wenku/zonghe/509403.html(转载请注明文章来源)
Copyright © 2008-2022 免费范文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ: 邮箱:tiandhx2@hotmail.com
苏ICP备16052595号-18
× 注册会员免费下载(下载后可以自由复制和排版)
注册会员下载
全站内容免费自由复制
注册会员下载
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: