#api函数

高级I/O之readv和writev函数

readv和writev函数用于在一次函数调用中读、写多个非连续缓冲区。有时也将这两个函数称为散布读(scatterread)和聚集写(gatherwrite)。#include<sys/uio.h>ssize_treadv(intfiledes,conststructiovec*iov,intiovcnt...
代码星球 ·2021-02-21

用于守护进程的出错处理函数

/**Errorroutinesforprogramsthatcanrunasadaemon.*/#include"apue.h"#include<errno.h>/*fordefinitionoferrno*/#include<stdarg.h>/*ISOCvariablearguments*...

信号之sleep函数

#include<unistd.h>unsignedintsleep(unsignedintseconds);返回值:0或未休眠够的秒数此函数使调用进程被挂起,直到满足以下条件之一:(1)已经过了seconds所指定的墙上时钟时间。(2)调用进程捕捉到一个信号并从信号处理程序返回。如果alarm信号一样,由...
代码星球 ·2021-02-21

信号之system函数

在http://www.cnblogs.com/nufangrensheng/p/3512291.html中已经有了一个system函数的实现,但是该版本并不执行任何信号处理。POSIX.1要求system忽略SIGINT和SIGQUIT,阻塞SIGCHLD。实例程序清单10-19使用http://www.cnblog...
代码星球 ·2021-02-21

信号之abort函数

abort函数的功能是使异常程序终止。#include<stdlib.h>voidabort(void);此函数不返回此函数将SIGABRT信号发送给调用进程(进程不应忽略此信号)。ISOC规定,调用abort将向主机环境递送一个未成功的终止通知,其方法是调用raise(SIGABRT)函数。实例程序清单1...
代码星球 ·2021-02-21

信号之sigsuspend函数

更改进程的信号屏蔽字可以阻塞所选择的信号,或解除对它们的阻塞。使用这种技术可以保护不希望由信号中断的代码临界区。如果希望对一个信号解除阻塞,然后pause等待以前被阻塞的信号发生,则又将如何呢?假定信号时SIGINT,实现这一点的一种不正确的方法是:sigset_tnewmask,oldmask;sigemptyset...
代码星球 ·2021-02-21

信号之sigsetjmp和siglongjmp函数

在信号处理程序中经常调用longjmp函数以返回到程序的主循环中,而不是从该处理程序返回。但是,调用longjmp有一个问题。当捕捉到一个信号时,进入信号捕捉函数,此时当前信号被自动地加到进程的信号屏蔽字中。这阻止了后来产生的这种信号中断该信号处理程序。(仅当从信号捕捉函数返回时再将进程的信号屏蔽字复位为原先值:htt...

信号之sigaction函数

sigaction函数的功能是检查或修改与指定信号相关联的处理动作(或同时执行这两种操作)。#include<signal.h>intsigaction(intsigno,conststructsigaction*restrictact,structsigaction*restrictoact);返回值:若...
代码星球 ·2021-02-21

信号之sigpending函数

sigpending函数返回信号集,其中的各个信号对于调用进程是阻塞的而不能递送,因而也一定是当前未决的。该信号集通过set参数返回。(这些信号是已经产生的信号,但因为信号屏蔽字中对其设置了屏蔽位,从而被阻塞,不能递送给进程的那些信号。注意sigpending返回的信号集与信号屏蔽字的区别。从集合角度来讲,此信号集是当...
代码星球 ·2021-02-21

信号之sigprocmask函数

一个进程的信号屏蔽字规定了当前阻塞而不能递送给该进程的信号集。调用函数sigprocmask可以检测或更改其信号屏蔽字,或者在一个步骤中同时执行这两个操作。#include<signal.h>intsigprocmask(inthow,constsigset_t*restrictset,sigset_t*r...
代码星球 ·2021-02-21

信号之alarm和pause函数

使用alarm函数可以设置一个计时器,在将来某个指定的时间,该计时器会超时。当计时器超时时,产生SIGALRM信号。如果不忽略或不捕捉此信号,则其默认动作是终止调用该alarm函数的进程。#include<unistd.h>unsignedintalarm(unsignedintseconds);返回值:0...
代码星球 ·2021-02-21

信号之kill和raise函数

kill函数将信号发送给进程或进程组。raise函数则允许进程向自身发送信号。#include<signal.h>intkill(pid_tpid,intsigno);intraise(intsigno);两个函数返回值:若成功则返回0,若出错则返回-1调用raise(signo);等价于调用kill(ge...
代码星球 ·2021-02-21

信号之可重入函数

进程捕捉到信号并对其进行处理时,进程正在执行的指令序列就被信号处理程序临时中断,它首先执行该信号处理程序中的指令。如果从信号处理程序返回(例如信号处理程序没有调用exit或longjmp),则继续执行在捕捉到信号时进程正在执行的正常指令序列。但在信号处理程序中,不能判断捕捉到信号时进程在何处执行。如果程序正在执行mal...
代码星球 ·2021-02-21

信号之signal函数

UNIX系统的信号机制最简单的接口是signal函数。signal函数的功能:为指定的信号安装一个新的信号处理函数。#include<signal.h>void(*signal(intsigno,void(*func)(int)))(int);复杂原型分开看:void(* signal(intsi...
代码星球 ·2021-02-21

进程关系之tcgetpgrp、tcsetpgrp和tcgetsid函数

需要有一种方法来通知内核哪一个进程组是前台进程组,这样,终端设备驱动程序就能了解将终端输入和终端产生的信号送到何处。#include<unistd.h>pid_ttcgetpgrp(intfiledes);返回值:若成功则返回前台进程组的进程组ID,若出错则返回-1inttcsetpgrp(intfiled...
首页上一页...1516171819...下一页尾页