管道、信号的函数接口
管道通信
匿名管道
pipe函数
此函数可以创建一个匿名的管道
int pipe(int pipefd[2])
//pipefd:用于存储对管道操作的两个文件描述符
//pipefd[0]:是读取端的文件描述符
//pipefd[1]:是写入端的文件描述符
//ret:成功返回0,失败返回-1
命名管道
mkfifo函数
此函数用于创建一个有名管道
int mkfifo(const char *pathname,mode_t mode)
//pathname:用于指定文件路径
//mode:用于设置文件的权限
//ret:成功返回0,失败返回-1
信号
kill函数
此函数可以向一个进程发送信号
int kill(pid_t pid,int sig)
//pid:指定要给哪个进程发送
//sig:要发送信号的名称
//ret:成功返回0,失败返回-1
raise函数
此函数可以向当前进程发送信号
int raise(int sig)
//sig:要发送信号的名称
//ret:成功返回0,失败返回非零值
alarm函数
此函数用于计数一段时间后向调用该函数的进程发送信号
unsigned alarm(unsigned seconds)
//seconds:设定的秒数
signal函数
通过此函数可以改变信号的默认动作,指向新的操作
typedef void (*sighandler_t)(int)
//信号的响应接口对应的函数指针
sighandler_t signal(int signum,sighandler_t handler)
//signum:指的是目标信号的编号
//handler:指的是信号的处理函数的地址,是一个函数指针类型
//SIG_IGN指的是信号可以被忽略,SIG_DFL指的是信号关联默认的响应动作。
sigprocmask函数
此函数用于设置信号集的属性
int sigprocmask(int how,const sigset_t *set,sigset_t *oldset)
//how:SIG_BLOCK:阻塞信号
SIG_UNBLOCK:不阻塞
//set:信号集
//oldset:旧的信号集,一般为NULL
//ret:成功返回0,失败返回-1
其它函数
int sigemptyset(sigset_t *set)//初始化并清空信号集
int sigfillset(sigset_t *set)//把所有信号添加到信号集
int sigaddset(sigset_t *set,int signum)//把信号添加到信号集
int sigdelset(sigset_t *set,int signum)//从信号集中删除某个信号
int sigismember(sigset_t *set,int signum)//检查信号是否在信号集中
浙公网安备 33010602011771号