【0443】signalfd + epoll 完成事件监听+指定信号处理(演示demo)
0 signalfd + epoll
以下是一个使用 signalfd 和 epoll 在多进程环境中的演示示例。该示例展示了父进程创建子进程,子进程通过信号发送给父进程,父进程使用 signalfd 接收信号并通过 epoll 监听事件。
- 信号屏蔽:使用 sigprocmask 阻塞 SIGUSR1 和 SIGCHLD 信号,防止其默认行为。
- signalfd:创建 signalfd 文件描述符,用于接收被阻塞的信号。
- epoll:创建 epoll 实例并将 signalfd 加入监听列表。
- 多进程:
- 子进程向父进程发送 SIGUSR1 信号。
- 父进程通过 epoll_wait 监听 signalfd 的事件,读取信号信息并处理。
- 当收到 SIGCHLD 信号时,父进程回收子进程并退出。
1 编译
- 文件名 test.c
- gcc test.c -o test
./test
2 结果
[root@node164 10