收藏 分销(赏)

Linux系统API函数手册.doc

上传人:天**** 文档编号:3552199 上传时间:2024-07-09 格式:DOC 页数:43 大小:163.04KB
下载 相关 举报
Linux系统API函数手册.doc_第1页
第1页 / 共43页
Linux系统API函数手册.doc_第2页
第2页 / 共43页
Linux系统API函数手册.doc_第3页
第3页 / 共43页
Linux系统API函数手册.doc_第4页
第4页 / 共43页
Linux系统API函数手册.doc_第5页
第5页 / 共43页
点击查看更多>>
资源描述

1、(一)文献操作篇1、creat(建立文献)头文献1 #include2 #include3 #include定义函数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 参数pa

2、thname所指的文献已存在。EACCESS 参数pathname 所指定的文献不符合所规定测试的权限EROFS 欲打开写入权限的文献存在于只读文献系统内EFAULT 参数pathname 指针超过可存取的内存空间EINVAL 参数mode 不对的。ENAMETOOLONG 参数pathname太长。ENOTDIR 参数pathname为一目录ENOMEM 核心内存局限性ELOOP 参数pathname有过多符号连接问题。EMFILE 已达成进程可同时打开的文献数上限ENFILE 已达成系统可同时打开的文献数上限附加说明creat()无法建立特别的装置文献,假如需要请使用mknod()。2、o

3、pen(打开文献)头文献1 #include2 #include3 #include定义函数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_CREA

4、T 若欲打开的文献不存在则自动建立该文献。O_EXCL 假如O_CREAT 也被设立,此指令会去检查文献是否存在。文献若不存在则建立该文献,否则将导致打开文献错误。此外,若O_CREAT与O_EXCL同时设立,并且欲打开的文献为符号连接,则会打开文献失败。O_NOCTTY 假如欲打开的文献为终端机设备时,则不会将该终端机当成进程控制终端机。O_TRUNC 若文献存在并且以可写的方式打开时,此旗标会令文献长度清为0,而本来存于该文献的资料也会消失。O_APPEND 当读写文献时会从文献尾开始移动,也就是所写入的数据会以附加的方式加入到文献后面。O_NONBLOCK 以不可阻断的方式打开文献,也就

5、是无论有无数据读取或等待,都会立即返回进程之中。O_NDELAY 同O_NONBLOCK。O_SYNC 以同步的方式打开文献。O_NOFOLLOW 假如参数pathname 所指的文献为一符号连接,则会令打开文献失败。O_DIRECTORY 假如参数pathname 所指的文献并非为一目录,则会令打开文献失败。此为Linux2.2以后特有的旗标,以避免一些系统安全问题。参数mode 则有下列数种组合,只有在建立新文献时才会生效,此外真正建文献时的权限会受到umask值所影响,因此该文献权限应当为(mode-umaks)。S_IRWXU00700 权限,代表该文献所有者具有可读、可写及可执行的权

6、限。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权限,代表其他用户具有可读、可写及

7、可执行的权限。S_IROTH 00004 权限,代表其他用户具有可读的权限S_IWOTH 00002权限,代表其他用户具有可写入的权限。S_IXOTH 00001 权限,代表其他用户具有可执行的权限。返回值若所有欲核查的权限都通过了检查则返回0 值,表达成功,只要有一个权限被严禁则返回-1。错误代码EEXIST 参数pathname 所指的文献已存在,却使用了O_CREAT和O_EXCL旗标。EACCESS 参数pathname所指的文献不符合所规定测试的权限。EROFS 欲测试写入权限的文献存在于只读文献系统内。EFAULT 参数pathname指针超过可存取内存空间。EINVAL 参数mo

8、de 不对的。ENAMETOOLONG 参数pathname太长。ENOTDIR 参数pathname不是目录。ENOMEM 核心内存局限性。ELOOP 参数pathname有过多符号连接问题。EIO I/O 存取错误3、close(关闭文献)头文献1 #include定义函数1 int close(int fd);函数说明当使用完文献后若已不再需要则可使用close()关闭该文献,二close()会让数据写回磁盘,并释放该文献所占用的资源。参数fd为先前由open()或creat()所返回的文献描述词。返回值若文献顺利关闭则返回0,发生错误时返回-1。错误代码EBADF 参数fd 非有效的文

9、献描述词或该文献已关闭。附加说明虽然在进程结束时,系统会自动关闭已打开的文献,但仍建议自行关闭文献,并的确检查返回值。4、read(由已打开的文献读取数据)头文献1 #include定义函数1 ssize_t read(int fd,void * buf ,size_t count);函数说明read()会把参数fd 所指的文献传送count个字节到buf指针所指的内存中。若参数count为0,则read()不会有作用并返回0。返回值为实际读取到的字节数,假如返回0,表达已到达文献尾或是无可读取的数据,此外文献读写位置会随读取到的字节移动。附加说明假如顺利read()会返回实际读到的字节数,最

10、佳能将返回值与参数count 作比较,若返回的字节数比规定读取的字节数少,则有也许读到了文献尾、从管道(pipe)或终端机读取,或者是read()被信号中断了读取动作。当有错误发生时则返回-1,错误代码存入errno中,而文献读写位置则无法预期。错误代码EINTR 此调用被信号所中断。EAGAIN 当使用不可阻断I/O 时(O_NONBLOCK),若无数据可读取则返回此值。EBADF 参数fd 非有效的文献描述词,或该文献已关闭。5、write(将数据写入已打开的文献内)头文献1 #include定义函数1 ssize_t write (int fd,const void * buf,size

11、_t count);函数说明write()会把参数buf所指的内存写入count个字节到参数fd所指的文献内。当然,文献读写位置也会随之移动。返回值假如顺利write()会返回实际写入的字节数。当有错误发生时则返回-1,错误代码存入errno中。错误代码EINTR 此调用被信号所中断。EAGAIN 当使用不可阻断I/O 时(O_NONBLOCK),若无数据可读取则返回此值。EADF 参数fd非有效的文献描述词,或该文献已关闭。6、flock(锁定文献或解除锁定)头文献1 #include定义函数1 int flock(int fd,int operation);函数说明flock()会依参数o

12、peration所指定的方式对参数fd所指的文献做各种锁定或解除锁定的动作。此函数只能锁定整个文献,无法锁定文献的某一区域。参数operation有下列四种情况:LOCK_SH 建立共享锁定。多个进程可同时对同一个文献作共享锁定。LOCK_EX 建立互斥锁定。一个文献同时只有一个互斥锁定。LOCK_UN 解除文献锁定状态。LOCK_NB 无法建立锁定期,此操作可不被阻断,立即返回进程。通常与LOCK_SH或LOCK_EX 做OR(|)组合。单一文献无法同时建立共享锁定和互斥锁定,而当使用dup()或fork()时文献描述词不会继承此种锁定。返回值返回0表达成功,若有错误则返回-1,错误代码存于

13、errno。7、lseek(移动文献的读写位置)头文献1 #include2 #include定义函数1 off_t lseek(int fildes,off_t offset ,int whence);函数说明每一个已打开的文献都有一个读写位置,当打开文献时通常其读写位置是指向文献开头,若是以附加的方式打开文献(如O_APPEND),则读写位置会指向文献尾。当read()或write()时,读写位置会随之增长,lseek()便是用来控制该文献的读写位置。参数fildes 为已打开的文献描述词,参数offset 为根据参数whence来移动读写位置的位移数。参数whence为下列其中一种:SE

14、EK_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);返回值当调用成功时则返回目前的读写位

15、置,也就是距离文献开头多少个字节。若有错误则返回-1,errno 会存放错误代码。附加说明Linux系统不允许lseek()对tty装置作用,此项动作会令lseek()返回ESPIPE。8、fcntl(文献描述词操作)头文献1 #include2 #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代表

16、欲操作的指令。有以下几种情况: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_NO

17、NBLOCK和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 flcok2 3 short int l_type; /* 锁定的状

18、态*/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,

19、错误因素存于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 * str

20、eam);函数说明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。返回值若配置成功则返回一指针,失败则返

21、回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()用来配置内存空间,

22、其大小由指定的size决定。返回值若配置成功则返回一指针,失败则返回NULL。范例void p = malloc(1024); /*配置1k的内存*/(三)进程操作篇1、execl(执行文献)头文献1 #include定义函数1 int execl(const char * path,const char * arg,.);函数说明execl()用来执行参数path字符串所代表的文献途径,接下来的参数代表执行该文献时传递过去的argv(0)、argv1,最后一个参数必须用空指针(NULL)作结束。返回值假如执行成功则函数不会返回,执行失败则直接返回-1,失败因素存于errno中。2、execl

23、p(从PATH 环境变量中查找文献并执行)头文献#include定义函数1 int execlp(const char * file,const char * arg,);函数说明execlp()会从PATH 环境变量所指的目录中查找符合参数file的文献名,找到后便执行该文献,然后将第二个以后的参数当做该文献的argv0、argv1,最后一个参数必须用空指针(NULL)作结束。返回值假如执行成功则函数不会返回,执行失败则直接返回-1,失败因素存于errno 中。错误代码参考execve()。3、execv(执行文献)头文献1 #include定义函数1 int execv (const ch

24、ar * 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()用来执行参数file

25、name字符串所代表的文献途径,第二个参数系运用数组指针来传递给执行文献,最后一个参数则为传递给执行文献的新环境变量数组。返回值假如执行成功则函数不会返回,执行失败则直接返回-1,失败因素存于errno 中。错误代码EACCES1. 欲执行的文献不具有用户可执行的权限。2. 欲执行的文献所属的文献系统是以noexec 方式挂上。3.欲执行的文献或script翻译器非一般文献。EPERM1.进程处在被追踪模式,执行者并不具有root权限,欲执行的文献具有SUID 或SGID 位。2.欲执行的文献所属的文献系统是以nosuid方式挂上,欲执行的文献具有SUID 或SGID 位元,但执行者并不具有r

26、oot权限。E2BIG 参数数组过大ENOEXEC 无法判断欲执行文献的执行文献格式,有也许是格式错误或无法在此平台执行。EFAULT 参数filename所指的字符串地址超过可存取空间范围。ENAMETOOLONG 参数filename所指的字符串太长。ENOENT 参数filename字符串所指定的文献不存在。ENOMEM 核心内存局限性ENOTDIR 参数filename字符串所包含的目录途径并非有效目录EACCES 参数filename字符串所包含的目录途径无法存取,权限局限性ELOOP 过多的符号连接ETXTBUSY 欲执行的文献已被其他进程打开并且正把数据写入该文献中EIO I/O

27、 存取错误ENFILE 已达成系统所允许的打开文献总数。EMFILE 已达成系统所允许单一进程所能打开的文献总数。EINVAL 欲执行文献的ELF执行格式不只一个PT_INTERP节区EISDIR ELF翻译器为一目录ELIBBAD ELF翻译器有问题。5、execvp(执行文献)头文献1 #include定义函数1 int execvp(const char *file ,char * const argv );函数说明execvp()会从PATH 环境变量所指的目录中查找符合参数file 的文献名,找到后便执行该文献,然后将第二个参数argv传给该欲执行的文献。返回值假如执行成功则函数不会

28、返回,执行失败则直接返回-1,失败因素存于errno中。错误代码请参考execve()。6、exit(正常结束进程)头文献1 #include定义函数1 void exit(int status);函数说明exit()用来正常终结目前进程的执行,并把参数status返回给父进程,而进程所有的缓冲区数据会自动写回并关闭未关闭的文献。7、_exit(结束进程执行)头文献1 #include定义函数1 void _exit(int status);函数说明_exit()用来立刻结束目前进程的执行,并把参数status返回给父进程,并关闭未关闭的文献。此函数调用后不会返回,并且会传递SIGCHLD信号

29、给父进程,父进程可以由wait函数取得子进程结束状态。附加说明_exit()不会解决标准I/O 缓冲区,如要更新缓冲区请使用exit()。8、vfork(建立一个新的进程)头文献1 #include定义函数1 pid_t vfork(void);函数说明vfork()会产生一个新的子进程,其子进程会复制父进程的数据与堆栈空间,并继承父进程的用户代码,组代码,环境变量、已打开的文献代码、工作目录和资源限制等。Linux 使用copy-on-write(COW)技术,只有当其中一进程试图修改欲复制的空间时才会做真正的复制动作,由于这些继承的信息是复制而来,并非指相同的内存空间,因此子进程对这些变量

30、的修改和父进程并不会同步。此外,子进程不会继承父进程的文献锁定和未解决的信号。注意,Linux不保证子进程会比父进程先执行或晚执行,因此编写程序时要留意死锁或竞争条件的发生。返回值假如vfork()成功则在父进程会返回新建立的子进程代码(PID),而在新建立的子进程中则返回0。假如vfork 失败则直接返回-1,失败因素存于errno中。错误代码EAGAIN 内存局限性。ENOMEM 内存局限性,无法配置核心所需的数据结构空间。9、getpid(取得进程辨认码)头文献1 #include定义函数1 pid_t getpid(void);函数说明getpid()用来取得目前进程的进程辨认码,许多

31、程序运用取到的此值来建立临时文献,以避免临时文献相同带来的问题。返回值目前进程的进程辨认码10、getppid(取得父进程的进程辨认码)头文献1 #include定义函数1 pid_t getppid(void);函数说明getppid()用来取得目前进程的父进程辨认码。返回值目前进程的父进程辨认码。11、wait(等待子进程中断或结束)头文献1 #include2 #include定义函数1 pid_t wait (int * status);函数说明wait()会暂时停止目前进程的执行,直到有信号来到或子进程结束。假如在调用wait()时子进程已经结束,则wait()会立即返回子进程结束状

32、态值。子进程的结束状态值会由参数status 返回,而子进程的进程辨认码也会一快返回。假如不在意结束状态值,则参数status可以设成NULL。子进程的结束状态值请参考waitpid()。返回值假如执行成功则返回子进程辨认码(PID),假如有错误发生则返回-1。失败因素存于errno中。12、waitpid(等待子进程中断或结束)头文献1 #include2 #include定义函数1 pid_t waitpid(pid_t pid,int * status,int options);函数说明waitpid()会暂时停止目前进程的执行,直到有信号来到或子进程结束。假如在调用wait()时子进程

33、已经结束,则wait()会立即返回子进程结束状态值。子进程的结束状态值会由参数status返回,而子进程的进程辨认码也会一快返回。假如不在意结束状态值,则参数status可以设成 NULL。参数pid为欲等待的子进程辨认码,其他数值意义如下:pid0 等待任何子进程辨认码为pid的子进程。参数option可认为0 或下面的OR 组合WNOHANG 假如没有任何已经结束的子进程则立即返回,不予以等待。WUNTRACED 假如子进程进入暂停执行情况则立即返回,但结束状态不予以理睬。子进程的结束状态返回后存于status,底下有几个宏可判别结束情况WIFEXITED(status)假如子进程正常结束

34、则为非0值。WEXITSTATUS(status)取得子进程exit()返回的结束代码,一般会先用WIFEXITED 来判断是否正常结束才干使用此宏。WIFSIGNALED(status)假如子进程是由于信号而结束则此宏值为真WTERMSIG(status)取得子进程因信号而中止的信号代码,一般会先用WIFSIGNALED 来判断后才使用此宏。WIFSTOPPED(status)假如子进程处在暂停执行情况则此宏值为真。一般只有使用WUNTRACED 时才会有此情况。WSTOPSIG(status)取得引发子进程暂停的信号代码,一般会先用WIFSTOPPED 来判断后才使用此宏。返回值假如执行成

35、功则返回子进程辨认码(PID),假如有错误发生则返回-1。失败因素存于errno中。(四)信号解决篇1、sigaction(查询或设立信号解决方式)头文献1 #include定义函数1 int sigaction(int signum,const struct sigaction *act ,struct sigaction *oldact);函数说明sigaction()会依参数signum指定的信号编号来设立该信号的解决函数。参数signum可以指定SIGKILL和SIGSTOP以外的所有信号。如参数结构sigaction定义如下1 struct sigaction2 3 void (*s

36、a_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_ONE

37、SHOT/SA_RESETHAND:当调用新的信号解决函数前,将此信号解决方式改为系统预设的方式。SA_RESTART:被信号中断的系统调用会自行重启SA_NOMASK/SA_NODEFER:在解决此信号未结束前不理睬此信号的再次到来。假如参数oldact不是NULL指针,则本来的信号解决方式会由此结构sigaction 返回。返回值执行成功则返回0,假如有错误则返回-1。错误代码EINVAL 参数signum 不合法, 或是企图拦截SIGKILL/SIGSTOPSIGKILL信号EFAULT 参数act,oldact指针地址无法存取。EINTR 此调用被中断2、sigaddset(增长一个信

38、号至信号集)头文献1 #include定义函数1 int sigaddset(sigset_t *set,int signum);函数说明sigaddset()用来将参数signum 代表的信号加入至参数set 信号集里。返回值执行成功则返回0,假如有错误则返回-1。错误代码EFAULT 参数set指针地址无法存取EINVAL 参数signum非合法的信号编号3、sigdelset(从信号集里删除一个信号)头文献1 #include定义函数1 int sigdelset(sigset_t * set,int signum);函数说明sigdelset()用来将参数signum代表的信号从参数s

39、et信号集里删除。返回值执行成功则返回0,假如有错误则返回-1。错误代码EFAULT 参数set指针地址无法存取EINVAL 参数signum非合法的信号编号4、sigemptyset(初始化信号集)头文献1 #include定义函数1 int sigemptyset(sigset_t *set);函数说明sigemptyset()用来将参数set信号集初始化并清空。返回值执行成功则返回0,假如有错误则返回-1。错误代码EFAULT 参数set指针地址无法存取5、sigfillset(将所有信号加入至信号集)头文献1 #include定义函数1 int sigfillset(sigset_t

40、* set);函数说明sigfillset()用来将参数set信号集初始化,然后把所有的信号加入到此信号集里。返回值执行成功则返回0,假如有错误则返回-1。附加说明EFAULT 参数set指针地址无法存取6、sigismember(测试某个信号是否已加入至信号集里)头文献1 #include定义函数1 int sigismember(const sigset_t *set,int signum);函数说明sigismember()用来测试参数signum 代表的信号是否已加入至参数set信号集里。假如信号集里已有该信号则返回1,否则返回0。返回值信号集已有该信号则返回1,没有则返回0。假如有错

41、误则返回-1。错误代码EFAULT 参数set指针地址无法存取EINVAL 参数signum 非合法的信号编号7、signal(设立信号解决方式)头文献1 #include定义函数1 void (*signal(int signum,void(* handler)(int)(int);函数说明signal()会依参数signum 指定的信号编号来设立该信号的解决函数。当指定的信号到达时就会跳转到参数handler指定的函数执行。假如参数handler不是函数指针,则必须是下列两个常数之一:SIG_IGN 忽略参数signum指定的信号。SIG_DFL 将参数signum 指定的信号重设为核心预

42、设的信号解决方式。关于信号的编号和说明,请参考附录D返回值返回先前的信号解决函数指针,假如有错误则返回SIG_ERR(-1)。附加说明在信号发生跳转到自定的handler解决函数执行后,系统会自动将此解决函数换回本来系统预设的解决方式,假如要改变此操作请改用sigaction()。8、sleep(让进程暂停执行一段时间)头文献1 #include定义函数1 unsigned int sleep(unsigned int seconds);函数说明sleep()会令目前的进程暂停,直到达成参数seconds 所指定的时间,或是被信号所中断。返回值若进程暂停到参数seconds 所指定的时间则返回

43、0,若有信号中断则返回剩余秒数。9、perror(打印犯错误因素信息字符串)头文献1 #include定义函数1 void perror(const char *s);函数说明perror()用来将上一个函数发生错误的因素输出到标准错误(stderr)。参数s所指的字符串会先打印出,后面再加上错误因素字符串。此错误因素依照全局变量errno的值来决定要输出的字符串。返回值10、mkfifo(建立具名管道)头文献1 #include2 #include定义函数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 来读取的操作会等到其

展开阅读全文
部分上传会员的收益排行 01、路***(¥15400+),02、曲****(¥15300+),
03、wei****016(¥13200+),04、大***流(¥12600+),
05、Fis****915(¥4200+),06、h****i(¥4100+),
07、Q**(¥3400+),08、自******点(¥2400+),
09、h*****x(¥1400+),10、c****e(¥1100+),
11、be*****ha(¥800+),12、13********8(¥800+)。
相似文档                                   自信AI助手自信AI助手
百度文库年卡

猜你喜欢                                   自信AI导航自信AI导航
搜索标签

当前位置:首页 > 教育专区 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服