网站制作过程步骤网上查房屋备案
2026/1/15 16:15:38 网站建设 项目流程
网站制作过程步骤,网上查房屋备案,如何建网站遂宁,济南房产信息网站官网一、信号通信 信号是 Linux 中用于异步通信、通知机制、处理随机事件的轻量级 IPC 方式#xff0c;比如进程终止、异常通知等。 1. 信号的发送与接收流程 触发信号#xff1a;根据需求#xff08;如用户按下 CtrlC#xff09;触发信号#xff1b;内核查找进程#xff…一、信号通信信号是 Linux 中用于异步通信、通知机制、处理随机事件的轻量级 IPC 方式比如进程终止、异常通知等。1. 信号的发送与接收流程触发信号根据需求如用户按下 CtrlC触发信号内核查找进程Linux 接收信号请求在 PCB进程控制块链表中找到目标进程的 PID中断进程执行信号处理函数目标进程暂停当前工作执行 PCB 中注册的信号处理函数如handle2恢复原进程执行信号处理函数执行完毕后原进程继续运行。2. 常见信号及默认行为Linux 系统定义了多个信号每个信号有其默认处理动作可通过man 7 signal查看。常见信号及默认行为如下信号名取值动作说明SIGHUP1Term控制终端挂起SIGINT2Term键盘中断CtrlCSIGQUIT3Core键盘退出Ctrl\并生成 core dumpSIGILL4Core非法指令SIGABRT6Core进程调用abort()触发SIGKILL9Term强制终止进程无法捕获 / 阻塞 / 忽略SIGSEGV11Core段错误非法内存访问SIGPIPE13Term向无读者的管道写数据SIGALRM14Term定时器信号alarm()触发SIGTERM15Term终止信号默认kill命令发送SIGSTOP19Stop暂停进程无法捕获 / 阻塞 / 忽略3. 信号相关函数1发送信号kill向指定进程发送信号c运行#include signal.h #include sys/types.h // 向pid对应的进程发送sig信号 int kill(pid_t pid, int sig);参数pid目标进程 PIDsig要发送的信号编号如SIGKILL对应 9返回值成功返回 0失败返回 - 1。2捕获 / 自定义信号处理signal注册信号处理函数自定义信号的行为c运行#include signal.h // 注册信号处理函数 void (*signal(int signum, void (*handler)(int)))(int);参数signum要捕获的信号编号handler处理函数可选值SIG_DFL默认处理SIG_IGN忽略信号自定义函数如void my_handler(int sig)返回值成功返回原处理函数指针失败返回SIG_ERR。二、共享内存共享内存是 System V 提供的一种高效的进程间通信方式通过让多个进程直接访问同一块物理内存实现数据共享无需拷贝速度快。1. 共享内存的使用步骤共享内存的生命周期分为 5 步申请共享内存映射共享内存将内核中的共享内存映射到进程地址空间读写共享内存撤销映射删除共享内存。2. 共享内存与管道的区别特性共享内存管道读写权限双方均可读写半双工一端读、一端写同步机制需配合信号 / 信号量等同步自带同步无数据时读阻塞数据管理不删除数据数据保持数据读取后被移除效率极高直接访问内存较低需内核拷贝3. 共享内存相关函数1创建 / 获取共享内存shmgetc运行#include sys/ipc.h #include sys/shm.h // 创建或获取共享内存 int shmget(key_t key, size_t size, int shmflg);参数key共享内存的键值可通过ftok生成size共享内存大小字节shmflg标志位如IPC_CREAT|0666表示创建并设置权限返回值成功返回共享内存 ID失败返回 - 1。2生成键值ftok为共享内存生成唯一键值c运行#include sys/ipc.h key_t ftok(const char *pathname, int proj_id);参数pathname已存在的文件路径proj_id整形数字通常用 ASCII 字符返回值成功返回键值失败返回 - 1。3映射共享内存shmat将共享内存映射到进程地址空间c运行#include sys/shm.h void *shmat(int shmid, const void *shmaddr, int shmflg);参数shmid共享内存 IDshmaddr映射地址NULL 表示由系统分配shmflg标志位如 0 表示可读可写返回值成功返回映射后的地址失败返回(void*)-1。4撤销映射shmdt将共享内存从进程地址空间撤销c运行#include sys/shm.h int shmdt(const void *shmaddr);参数shmaddrshmat返回的映射地址返回值成功返回 0失败返回 - 1。5控制共享内存shmctl删除共享内存或获取 / 设置其属性c运行#include sys/shm.h int shmctl(int shmid, int cmd, struct shmid_ds *buf);参数shmid共享内存 IDcmd操作命令如IPC_RMID表示删除共享内存buf共享内存属性结构体可传 NULL返回值成功返回 0失败返回 - 1。4. 共享内存相关命令查看共享内存ipcs -m删除共享内存ipcrm -m 共享内存ID。总结信号适合异步通知、简单事件处理缺点是无法传递复杂数据共享内存适合大量数据的高效共享需配合同步机制如信号、信号量使用。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询