管道、信号的函数接口

管道通信

匿名管道

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)//检查信号是否在信号集中
posted @ 2025-05-05 14:50  LRadian  阅读(47)  评论(0)    收藏  举报