Linux系统API函数手册.doc
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Linux 系统 API 函数 手册
- 资源描述:
-
(一)文献操作篇 1、creat(建立文献) 头文献 1 #include<sys/types.h> 2 #include<sys/stat.h> 3 #include<fcntl.h> 定义函数 1 int creat(const char * pathname, mode_tmode); 函数说明 参数pathname指向欲建立的文献途径字符串。creat()相称于使用下列的调用方式调用open() 1 open(const char * pathname ,(O_CREAT|O_WRONLY|O_TRUNC)); 错误代码 关于参数mode请参考open()函数。 返回值 creat()会返回新的文献描述词,若有错误发生则会返回-1,并把错误代码设给errno。 EEXIST 参数pathname所指的文献已存在。 EACCESS 参数pathname 所指定的文献不符合所规定测试的权限 EROFS 欲打开写入权限的文献存在于只读文献系统内 EFAULT 参数pathname 指针超过可存取的内存空间 EINVAL 参数mode 不对的。 ENAMETOOLONG 参数pathname太长。 ENOTDIR 参数pathname为一目录 ENOMEM 核心内存局限性 ELOOP 参数pathname有过多符号连接问题。 EMFILE 已达成进程可同时打开的文献数上限 ENFILE 已达成系统可同时打开的文献数上限 附加说明 creat()无法建立特别的装置文献,假如需要请使用mknod()。 2、open(打开文献) 头文献 1 #include<sys/types.h> 2 #include<sys/stat.h> 3 #include<fcntl.h> 定义函数 1 int open( const char * pathname, int flags); 2 int open( const char * pathname,int flags, mode_t mode); 函数说明 参数pathname 指向欲打开的文献途径字符串。下列是参数flags 所能使用的旗标: O_RDONLY 以只读方式打开文献 O_WRONLY 以只写方式打开文献 O_RDWR 以可读写方式打开文献。上述三种旗标是互斥的,也就是不可同时使用,但可与下列的旗标运用OR(|)运算符组合。 O_CREAT 若欲打开的文献不存在则自动建立该文献。 O_EXCL 假如O_CREAT 也被设立,此指令会去检查文献是否存在。文献若不存在则建立该文献,否则将导致打开文献错误。此外,若O_CREAT与O_EXCL同时设立,并且欲打开的文献为符号连接,则会打开文献失败。 O_NOCTTY 假如欲打开的文献为终端机设备时,则不会将该终端机当成进程控制终端机。 O_TRUNC 若文献存在并且以可写的方式打开时,此旗标会令文献长度清为0,而本来存于该文献的资料也会消失。 O_APPEND 当读写文献时会从文献尾开始移动,也就是所写入的数据会以附加的方式加入到文献后面。 O_NONBLOCK 以不可阻断的方式打开文献,也就是无论有无数据读取或等待,都会立即返回进程之中。 O_NDELAY 同O_NONBLOCK。 O_SYNC 以同步的方式打开文献。 O_NOFOLLOW 假如参数pathname 所指的文献为一符号连接,则会令打开文献失败。 O_DIRECTORY 假如参数pathname 所指的文献并非为一目录,则会令打开文献失败。 此为Linux2.2以后特有的旗标,以避免一些系统安全问题。参数mode 则有下列数种组合,只有在建立新文献时才会生效,此外真正建文献时的权限会受到umask值所影响,因此该文献权限应当为(mode-umaks)。 S_IRWXU00700 权限,代表该文献所有者具有可读、可写及可执行的权限。 S_IRUSR 或S_IREAD,00400权限,代表该文献所有者具有可读取的权限。 S_IWUSR 或S_IWRITE,00200 权限,代表该文献所有者具有可写入的权限。 S_IXUSR 或S_IEXEC,00100 权限,代表该文献所有者具有可执行的权限。 S_IRWXG 00070权限,代表该文献用户组具有可读、可写及可执行的权限。 S_IRGRP 00040 权限,代表该文献用户组具有可读的权限。 S_IWGRP 00020权限,代表该文献用户组具有可写入的权限。 S_IXGRP 00010 权限,代表该文献用户组具有可执行的权限。 S_IRWXO 00007权限,代表其他用户具有可读、可写及可执行的权限。 S_IROTH 00004 权限,代表其他用户具有可读的权限 S_IWOTH 00002权限,代表其他用户具有可写入的权限。 S_IXOTH 00001 权限,代表其他用户具有可执行的权限。 返回值 若所有欲核查的权限都通过了检查则返回0 值,表达成功,只要有一个权限被严禁则返回-1。 错误代码 EEXIST 参数pathname 所指的文献已存在,却使用了O_CREAT和O_EXCL旗标。 EACCESS 参数pathname所指的文献不符合所规定测试的权限。 EROFS 欲测试写入权限的文献存在于只读文献系统内。 EFAULT 参数pathname指针超过可存取内存空间。 EINVAL 参数mode 不对的。 ENAMETOOLONG 参数pathname太长。 ENOTDIR 参数pathname不是目录。 ENOMEM 核心内存局限性。 ELOOP 参数pathname有过多符号连接问题。 EIO I/O 存取错误 3、close(关闭文献) 头文献 1 #include<unistd.h> 定义函数 1 int close(int fd); 函数说明 当使用完文献后若已不再需要则可使用close()关闭该文献,二close()会让数据写回磁盘,并释放该文献所占用的资源。参数fd为先前由open()或creat()所返回的文献描述词。 返回值 若文献顺利关闭则返回0,发生错误时返回-1。 错误代码 EBADF 参数fd 非有效的文献描述词或该文献已关闭。 附加说明 虽然在进程结束时,系统会自动关闭已打开的文献,但仍建议自行关闭文献,并的确检查返回值。 4、read(由已打开的文献读取数据) 头文献 1 #include<unistd.h> 定义函数 1 ssize_t read(int fd,void * buf ,size_t count); 函数说明 read()会把参数fd 所指的文献传送count个字节到buf指针所指的内存中。若参数count为0,则read()不会有作用并返回0。返回值为实际读取到的字节数,假如返回0,表达已到达文献尾或是无可读取的数据,此外文献读写位置会随读取到的字节移动。 附加说明 假如顺利read()会返回实际读到的字节数,最佳能将返回值与参数count 作比较,若返回的字节数比规定读取的字节数少,则有也许读到了文献尾、从管道(pipe)或终端机读取,或者是read()被信号中断了读取动作。当有错误发生时则返回-1,错误代码存入errno中,而文献读写位置则无法预期。 错误代码 EINTR 此调用被信号所中断。 EAGAIN 当使用不可阻断I/O 时(O_NONBLOCK),若无数据可读取则返回此值。 EBADF 参数fd 非有效的文献描述词,或该文献已关闭。 5、write(将数据写入已打开的文献内) 头文献 1 #include<unistd.h> 定义函数 1 ssize_t write (int fd,const void * buf,size_t count); 函数说明 write()会把参数buf所指的内存写入count个字节到参数fd所指的文献内。当然,文献读写位置也会随之移动。 返回值 假如顺利write()会返回实际写入的字节数。当有错误发生时则返回-1,错误代码存入errno中。 错误代码 EINTR 此调用被信号所中断。 EAGAIN 当使用不可阻断I/O 时(O_NONBLOCK),若无数据可读取则返回此值。 EADF 参数fd非有效的文献描述词,或该文献已关闭。 6、flock(锁定文献或解除锁定) 头文献 1 #include<sys/file.h> 定义函数 1 int flock(int fd,int operation); 函数说明 flock()会依参数operation所指定的方式对参数fd所指的文献做各种锁定或解除锁定的动作。此函数只能锁定整个文献,无法锁定文献的某一区域。 参数 operation有下列四种情况: LOCK_SH 建立共享锁定。多个进程可同时对同一个文献作共享锁定。 LOCK_EX 建立互斥锁定。一个文献同时只有一个互斥锁定。 LOCK_UN 解除文献锁定状态。 LOCK_NB 无法建立锁定期,此操作可不被阻断,立即返回进程。通常与LOCK_SH或LOCK_EX 做OR(|)组合。 单一文献无法同时建立共享锁定和互斥锁定,而当使用dup()或fork()时文献描述词不会继承此种锁定。 返回值 返回0表达成功,若有错误则返回-1,错误代码存于errno。 7、lseek(移动文献的读写位置) 头文献 1 #include<sys/types.h> 2 #include<unistd.h> 定义函数 1 off_t lseek(int fildes,off_t offset ,int whence); 函数说明 每一个已打开的文献都有一个读写位置,当打开文献时通常其读写位置是指向文献开头,若是以附加的方式打开文献(如O_APPEND),则读写位置会指向文献尾。当read()或write()时,读写位置会随之增长,lseek()便是用来控制该文献的读写位置。参数fildes 为已打开的文献描述词,参数offset 为根据参数whence来移动读写位置的位移数。 参数 whence为下列其中一种: SEEK_SET 参数offset即为新的读写位置。 SEEK_CUR 以目前的读写位置往后增长offset个位移量。 SEEK_END 将读写位置指向文献尾后再增长offset个位移量。 当whence 值为SEEK_CUR 或SEEK_END时,参数offet允许负值的出现。 下列是教特别的使用方式: 1) 欲将读写位置移到文献开头时:lseek(int fildes,0,SEEK_SET); 2) 欲将读写位置移到文献尾时:lseek(int fildes,0,SEEK_END); 3) 想要取得目前文献位置时:lseek(int fildes,0,SEEK_CUR); 返回值 当调用成功时则返回目前的读写位置,也就是距离文献开头多少个字节。若有错误则返回-1,errno 会存放错误代码。 附加说明 Linux系统不允许lseek()对tty装置作用,此项动作会令lseek()返回ESPIPE。 8、fcntl(文献描述词操作) 头文献 1 #include<unistd.h> 2 #include<fcntl.h> 定义函数 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<stdio.h> 定义函数 1 char * fgets(char * s,int size,FILE * stream); 函数说明 fgets()用来从参数stream所指的文献内读入字符并存到参数s所指的内存空间,直到出现换行字符、读到文献尾或是已读了size-1个字符为止,最后会加上NULL作为字符串结束。 返回值 gets()若成功则返回s指针,返回NULL则表达有错误发生。 10、fputs(将一指定的字符串写入文献内) 头文献 1 #include<stdio.h> 定义函数 1 int fputs(const char * s,FILE * stream); 函数说明 fputs()用来将参数s所指的字符串写入到参数stream所指的文献内。 返回值 若成功则返回写出的字符个数,返回EOF则表达有错误发生。 (二)内存控制篇 1、calloc(配置内存空间) 头文献 1 #include <stdlib.h> 定义函数 1 void *calloc(size_t nmemb,size_t size); 函数说明 calloc()用来配置nmemb个相邻的内存单位,每一单位的大小为size,并返回指向第一个元素的指针。这和使用下列的方式效果相同:malloc(nmemb*size);但是,在运用calloc()配置内存时会将内存内容初始化为0。 返回值 若配置成功则返回一指针,失败则返回NULL。 2、free(释放原先配置的内存) 头文献 1 #include<stdlib.h> 定义函数 1 void free(void *ptr); 函数说明 参数ptr为指向先前由malloc()、calloc()或realloc()所返回的内存指针。调用free()后ptr所指的内存空间便会被收回。假若参数ptr所指的内存空间已被收回或是未知的内存地址,则调用free()也许会有无法预期的情况发生。若参数ptr为NULL,则free()不会有任何作用。 3、malloc(配置内存空间) 头文献 1 #include<stdlib.h> 定义函数 1 void * malloc(size_t size); 函数说明 malloc()用来配置内存空间,其大小由指定的size决定。 返回值 若配置成功则返回一指针,失败则返回NULL。 范例 void p = malloc(1024); /*配置1k的内存*/ (三)进程操作篇 1、execl(执行文献) 头文献 1 #include<unistd.h> 定义函数 1 int execl(const char * path,const char * arg,....); 函数说明 execl()用来执行参数path字符串所代表的文献途径,接下来的参数代表执行该文献时传递过去的argv(0)、argv[1]……,最后一个参数必须用空指针(NULL)作结束。 返回值 假如执行成功则函数不会返回,执行失败则直接返回-1,失败因素存于errno中。 2、execlp(从PATH 环境变量中查找文献并执行) 头文献 #include<unistd.h> 定义函数 1 int execlp(const char * file,const char * arg,……); 函数说明 execlp()会从PATH 环境变量所指的目录中查找符合参数file的文献名,找到后便执行该文献,然后将第二个以后的参数当做该文献的argv[0]、argv[1]……,最后一个参数必须用空指针(NULL)作结束。 返回值 假如执行成功则函数不会返回,执行失败则直接返回-1,失败因素存于errno 中。 错误代码 参考execve()。 3、execv(执行文献) 头文献 1 #include<unistd.h> 定义函数 1 int execv (const char * path, char * const argv[ ]); 函数说明 execv()用来执行参数path字符串所代表的文献途径,与execl()不同的地方在于execve()只需两个参数,第二个参数运用数组指针来传递给执行文献。 返回值 假如执行成功则函数不会返回,执行失败则直接返回-1,失败因素存于errno 中。 错误代码 请参考execve()。 4、execve(执行文献) 头文献 1 #include<unistd.h> 定义函数 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<unistd.h> 定义函数 1 int execvp(const char *file ,char * const argv []); 函数说明 execvp()会从PATH 环境变量所指的目录中查找符合参数file 的文献名,找到后便执行该文献,然后将第二个参数argv传给该欲执行的文献。 返回值 假如执行成功则函数不会返回,执行失败则直接返回-1,失败因素存于errno中。 错误代码 请参考execve()。 6、exit(正常结束进程) 头文献 1 #include<stdlib.h> 定义函数 1 void exit(int status); 函数说明 exit()用来正常终结目前进程的执行,并把参数status返回给父进程,而进程所有的缓冲区数据会自动写回并关闭未关闭的文献。 7、_exit(结束进程执行) 头文献 1 #include<unistd.h> 定义函数 1 void _exit(int status); 函数说明 _exit()用来立刻结束目前进程的执行,并把参数status返回给父进程,并关闭未关闭的文献。此函数调用后不会返回,并且会传递SIGCHLD信号给父进程,父进程可以由wait函数取得子进程结束状态。 附加说明 _exit()不会解决标准I/O 缓冲区,如要更新缓冲区请使用exit()。 8、vfork(建立一个新的进程) 头文献 1 #include<unistd.h> 定义函数 1 pid_t vfork(void); 函数说明 vfork()会产生一个新的子进程,其子进程会复制父进程的数据与堆栈空间,并继承父进程的用户代码,组代码,环境变量、已打开的文献代码、工作目录和资源限制等。Linux 使用copy-on-write(COW)技术,只有当其中一进程试图修改欲复制的空间时才会做真正的复制动作,由于这些继承的信息是复制而来,并非指相同的内存空间,因此子进程对这些变量的修改和父进程并不会同步。此外,子进程不会继承父进程的文献锁定和未解决的信号。注意,Linux不保证子进程会比父进程先执行或晚执行,因此编写程序时要留意 死锁或竞争条件的发生。 返回值 假如vfork()成功则在父进程会返回新建立的子进程代码(PID),而在新建立的子进程中则返回0。假如vfork 失败则直接返回-1,失败因素存于errno中。 错误代码 EAGAIN 内存局限性。ENOMEM 内存局限性,无法配置核心所需的数据结构空间。 9、getpid(取得进程辨认码) 头文献 1 #include<unistd.h> 定义函数 1 pid_t getpid(void); 函数说明 getpid()用来取得目前进程的进程辨认码,许多程序运用取到的此值来建立临时文献,以避免临时文献相同带来的问题。 返回值 目前进程的进程辨认码 10、getppid(取得父进程的进程辨认码) 头文献 1 #include<unistd.h> 定义函数 1 pid_t getppid(void); 函数说明 getppid()用来取得目前进程的父进程辨认码。 返回值 目前进程的父进程辨认码。 11、wait(等待子进程中断或结束) 头文献 1 #include<sys/types.h> 2 #include<sys/wait.h> 定义函数 1 pid_t wait (int * status); 函数说明 wait()会暂时停止目前进程的执行,直到有信号来到或子进程结束。假如在调用wait()时子进程已经结束,则wait()会立即返回子进程结束状态值。子进程的结束状态值会由参数status 返回,而子进程的进程辨认码也会一快返回。假如不在意结束状态值,则 参数 status可以设成NULL。子进程的结束状态值请参考waitpid()。 返回值 假如执行成功则返回子进程辨认码(PID),假如有错误发生则返回-1。失败因素存于errno中。 12、waitpid(等待子进程中断或结束) 头文献 1 #include<sys/types.h> 2 #include<sys/wait.h> 定义函数 1 pid_t waitpid(pid_t pid,int * status,int options); 函数说明 waitpid()会暂时停止目前进程的执行,直到有信号来到或子进程结束。假如在调用wait()时子进程已经结束,则wait()会立即返回子进程结束状态值。子进程的结束状态值会由参数status返回,而子进程的进程辨认码也会一快返回。假如不在意结束状态值,则参数status可以设成 NULL。参数pid为欲等待的子进程辨认码,其他数值意义如下: pid<-1 等待进程组辨认码为pid绝对值的任何子进程。 pid=-1 等待任何子进程,相称于wait()。 pid=0 等待进程组辨认码与目前进程相同的任何子进程。 pid>0 等待任何子进程辨认码为pid的子进程。 参数option可认为0 或下面的OR 组合 WNOHANG 假如没有任何已经结束的子进程则立即返回,不予以等待。 WUNTRACED 假如子进程进入暂停执行情况则立即返回,但结束状态不予以理睬。 子进程的结束状态返回后存于status,底下有几个宏可判别结束情况 WIFEXITED(status)假如子进程正常结束则为非0值。 WEXITSTATUS(status)取得子进程exit()返回的结束代码,一般会先用WIFEXITED 来判断是否正常结束才干使用此宏。 WIFSIGNALED(status)假如子进程是由于信号而结束则此宏值为真 WTERMSIG(status)取得子进程因信号而中止的信号代码,一般会先用WIFSIGNALED 来判断后才使用此宏。 WIFSTOPPED(status)假如子进程处在暂停执行情况则此宏值为真。一般只有使用WUNTRACED 时才会有此情况。 WSTOPSIG(status)取得引发子进程暂停的信号代码,一般会先用WIFSTOPPED 来判断后才使用此宏。 返回值 假如执行成功则返回子进程辨认码(PID),假如有错误发生则返回-1。失败因素存于errno中。 (四)信号解决篇 1、sigaction(查询或设立信号解决方式) 头文献 1 #include<signal.h> 定义函数 1 int sigaction(int signum,const struct sigaction *act ,struct sigaction *oldact); 函数说明 sigaction()会依参数signum指定的信号编号来设立该信号的解决函数。参数signum可以指定SIGKILL和SIGSTOP以外的所有信号。 如参数结构sigaction定义如下 1 struct sigaction 2 { 3 void (*sa_handler) (int); 4 sigset_t sa_mask; 5 int sa_flags; 6 void (*sa_restorer) (void); 7 } sa_handler此参数和signal()的参数handler相同,代表新的信号解决函数,其他意义请参考signal()。 sa_mask 用来设立在解决该信号时暂时将sa_mask 指定的信号搁置。 sa_restorer 此参数没有使用。 sa_flags 用来设立信号解决的其他相关操作,下列的数值可用。 OR 运算(|)组合 A_NOCLDSTOP : 假如参数signum为SIGCHLD,则当子进程暂停时并不会告知父进程 SA_ONESHOT/SA_RESETHAND:当调用新的信号解决函数前,将此信号解决方式改为系统预设的方式。 SA_RESTART:被信号中断的系统调用会自行重启 SA_NOMASK/SA_NODEFER:在解决此信号未结束前不理睬此信号的再次到来。 假如参数oldact不是NULL指针,则本来的信号解决方式会由此结构sigaction 返回。 返回值 执行成功则返回0,假如有错误则返回-1。 错误代码 EINVAL 参数signum 不合法, 或是企图拦截SIGKILL/SIGSTOPSIGKILL信号 EFAULT 参数act,oldact指针地址无法存取。 EINTR 此调用被中断 2、sigaddset(增长一个信号至信号集) 头文献 1 #include<signal.h> 定义函数 1 int sigaddset(sigset_t *set,int signum); 函数说明 sigaddset()用来将参数signum 代表的信号加入至参数set 信号集里。 返回值 执行成功则返回0,假如有错误则返回-1。 错误代码 EFAULT 参数set指针地址无法存取 EINVAL 参数signum非合法的信号编号 3、sigdelset(从信号集里删除一个信号) 头文献 1 #include<signal.h> 定义函数 1 int sigdelset(sigset_t * set,int signum); 函数说明 sigdelset()用来将参数signum代表的信号从参数set信号集里删除。 返回值 执行成功则返回0,假如有错误则返回-1。 错误代码 EFAULT 参数set指针地址无法存取 EINVAL 参数signum非合法的信号编号 4、sigemptyset(初始化信号集) 头文献 1 #include<signal.h> 定义函数 1 int sigemptyset(sigset_t *set); 函数说明 sigemptyset()用来将参数set信号集初始化并清空。 返回值 执行成功则返回0,假如有错误则返回-1。 错误代码 EFAULT 参数set指针地址无法存取 5、sigfillset(将所有信号加入至信号集) 头文献 1 #include<signal.h> 定义函数 1 int sigfillset(sigset_t * set); 函数说明 sigfillset()用来将参数set信号集初始化,然后把所有的信号加入到此信号集里。 返回值 执行成功则返回0,假如有错误则返回-1。 附加说明 EFAULT 参数set指针地址无法存取 6、sigismember(测试某个信号是否已加入至信号集里) 头文献 1 #include<signal.h> 定义函数 1 int sigismember(const sigset_t *set,int signum); 函数说明 sigismember()用来测试参数signum 代表的信号是否已加入至参数set信号集里。假如信号集里已有该信号则返回1,否则返回0。 返回值 信号集已有该信号则返回1,没有则返回0。假如有错误则返回-1。 错误代码 EFAULT 参数set指针地址无法存取 EINVAL 参数signum 非合法的信号编号 7、signal(设立信号解决方式) 头文献 1 #include<signal.h> 定义函数 1 void (*signal(int signum,void(* handler)(int)))(int); 函数说明 signal()会依参数signum 指定的信号编号来设立该信号的解决函数。当指定的信号到达时就会跳转到参数handler指定的函数执行。假如 参数handler不是函数指针,则必须是下列两个常数之一: SIG_IGN 忽略参数signum指定的信号。 SIG_DFL 将参数signum 指定的信号重设为核心预设的信号解决方式。 关于信号的编号和说明,请参考附录D 返回值 返回先前的信号解决函数指针,假如有错误则返回SIG_ERR(-1)。 附加说明 在信号发生跳转到自定的handler解决函数执行后,系统会自动将此解决函数换回本来系统预设的解决方式,假如要改变此操作请改用 sigaction()。 8、sleep(让进程暂停执行一段时间) 头文献 1 #include<unistd.h> 定义函数 1 unsigned int sleep(unsigned int seconds); 函数说明 sleep()会令目前的进程暂停,直到达成参数seconds 所指定的时间,或是被信号所中断。 返回值 若进程暂停到参数seconds 所指定的时间则返回0,若有信号中断则返回剩余秒数。 9、perror(打印犯错误因素信息字符串) 头文献 1 #include<stdio.h> 定义函数 1 void perror(const char *s); 函数说明 perror()用来将上一个函数发生错误的因素输出到标准错误(stderr)。参数s所指的字符串会先打印出,后面再加上错误因素字符串。此 错误因素依照全局变量errno的值来决定要输出的字符串。 返回值 10、mkfifo(建立具名管道) 头文献 1 #include<sys/types.h> 2 #include<sys/stat.h> 定义函数 1 int mkfifo(const char * pathname,mode_t mode); 函数说明 mkfifo()会依参数pathname建立特殊的FIFO文献,该文献必须不存在,而参数mode为该文献的权限(mode%~umask),因此 umask值也会 影响到FIFO文献的权限。Mkfifo()建立的FIFO文献其他进程都可以用读写一般文献的方式存取。当使用open()来打开 FIFO文献时, O_NONBLOCK旗标会有影响 1、当使用O_NONBLOCK 旗标时,打开FIFO 文献来读取的操作会立刻返回,但是若还没有其他进程打开FIFO 文献来读取,则写入的操作会 返回ENXIO 错误代码。 2、没有使用O_NONBLOCK 旗标时,打开FIFO 来读取的操作会等到其展开阅读全文
咨信网温馨提示:1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。




Linux系统API函数手册.doc



实名认证













自信AI助手
















微信客服
客服QQ
发送邮件
意见反馈



链接地址:https://www.zixin.com.cn/doc/3552199.html