当前位置: 首页 > news >正文

可以做网站的编程有什么个人如何注册商标

可以做网站的编程有什么,个人如何注册商标,人力资源公司名称大全简单大气,做网站和网络推广Linux —— 信号初识 什么是信号测试几个信号signal函数函数原型参数说明返回值注意事项示例 后台程序前台转后台检测输入中断向量表 我们今天来继续学习Linux的内容#xff0c;今天我们要了解的是Linux操作系统中的信号#xff1a; 什么是信号 信号是操作系统内核与进程之… Linux —— 信号初识 什么是信号测试几个信号signal函数函数原型参数说明返回值注意事项示例 后台程序前台转后台检测输入中断向量表 我们今天来继续学习Linux的内容今天我们要了解的是Linux操作系统中的信号 什么是信号 信号是操作系统内核与进程之间进行异步通信的一种机制它允许系统或进程向另一个进程发送简短的控制信息以通知进程有特定的事件发生或要求进程采取某种行动。信号是软中断意味着它们是由软件生成的并非直接由硬件触发。以下是Linux信号的一些关键概念 信号的来源 内核: 内核可以因各种事件自动发送信号给进程如进程试图执行非法指令、访问无效内存地址、用户按下CtrlC终止进程等。进程: 进程可以通过系统调用kill()向自己或其他进程发送信号。终端: 用户在终端上执行操作如按下CtrlC或CtrlZ也会导致内核向前台进程发送信号SIGINT中断或SIGTSTP停止。硬件: 尽管信号主要由软件生成某些硬件异常如断电也可以间接触发信号。 信号的目的 通知事件: 信号用来告知进程某些状态变化或事件的发生如子进程结束、定时器到期等。控制进程行为: 信号可以请求进程采取特定动作比如终止、暂停、继续执行或调整优先级等。 信号的处理方式 默认动作: 每个信号都有一个默认的行为如SIGINT通常会导致进程终止。忽略: 进程可以选择忽略某些信号即不对信号做出反应。自定义处理: 进程可以定义自己的信号处理函数通过signal()或sigaction()系统调用来指定信号的处理方式。 信号掩码和阻塞 进程可以设置信号掩码来暂时阻止阻塞某些信号的传递直到进程解除阻塞。 常见信号: SIGINT (2): 当用户按下CtrlC时发送通常用于中断进程。SIGTERM (15): 用来请求进程正常终止。SIGHUP (1): 挂起信号通常在终端挂断时发送给与之相连的进程。SIGKILL (9): 不能被忽略或阻塞用于强制结束进程。SIGSTOP (19): 停止进程不能被捕获或忽略。 我们可以用kill -l来查看所有的信号 这里我们来看几个比较重要的 SIGHUP (1) - 挂起信号 当终端线路挂断时发送给控制终端所属的进程组。通常用于通知进程配置文件可能已更改需要重新加载。守护进程经常捕获此信号以实现优雅重启。SIGINT (2) - 中断信号 当用户按下CtrlC时产生请求进程中断当前操作并退出。默认情况下会导致进程终止。SIGQUIT (3) - 退出信号 类似于SIGINT但通常伴随着生成核心转储core dump用于调试。在终端下通常是Ctrl\ 发送此信号。SIGKILL (9) - 强制终止信号 不能被捕获、忽略或阻塞用于立即结束进程。当其他手段无法终止进程时使用。SIGTERM (15) - 终止信号 一种温和的请求进程终止的信号进程可以注册处理函数来自定义清理操作。是结束进程的首选方式。SIGSEGV (11) - 段错误信号 当进程尝试访问不允许其访问的内存段时发送通常指示程序中的内存访问错误。SIGALRM (14) - 闹钟信号 与定时器相关联当设定的定时器超时时发送。常用于实现定时任务或超时检测。SIGCHLD (17) - 子进程状态改变信号 父进程接收到此信号表明其子进程已经终止或停止。用于监控子进程状态并回收资源。SIGSTOP (19) - 停止信号 强制进程停止执行。不能被忽略或被捕获类似于暂停键常用于调试。SIGCONT (18) - 继续执行信号 使被SIGSTOP停止的进程恢复执行。通常配合SIGSTOP使用用于控制进程的暂停与继续。SIGUSR1 和 SIGUSR2 (10, 31) - 用户自定义信号 这两个信号留给用户自定义用途可以用于进程间通信或触发特定的处理逻辑。 这些信号在系统编程中扮演着关键角色理解它们有助于编写更稳定、可维护的代码尤其是在需要处理进程间通信、异常情况或实现特定行为的场景中。 测试几个信号 我们创建一个cc文件 #includeiostream #includeunistd.h using namespace std;int main() {while(true){cout running process ... endl;sleep(1);} }我们用g编译运行一下 我们**CtrlC**可以终止进程 同时我们重新运行另开一个窗口 我们也可以使用信号3 或者Ctrl \ signal函数 为了验证Ctrl C和信号2是否是同一件事情我们可以利用signal来验证 在Linux中signal()函数是一个用于处理信号的关键函数它允许进程对操作系统发送的各种信号做出响应。信号是Linux和其他类UNIX系统中一种进程间通信IPC的方式用于通知进程发生了某种事件如用户请求终止进程、硬件故障、定时器到期等。下面是对signal()函数的基本介绍和使用方法 函数原型 #include signal.htypedef void (*sighandler_t)(int);sighandler_t signal(int signum, sighandler_t handler);参数说明 signum要处理的信号编号比如SIGINT、SIGTERM等。handler当指定的信号发生时系统调用的处理函数。它可以是以下几种SIG_DFL默认处理恢复信号的默认行为如终止进程。SIG_IGN忽略信号忽略此信号。自定义函数一个用户自定义的函数指针该函数原型通常为void function(int signum)其中signum是接收到的信号编号。 返回值 如果成功signal()返回之前为该信号设置的处理函数的地址。如果之前没有设置处理函数即使用默认处理则返回SIG_DFL如果之前忽略了该信号则返回SIG_IGN。在某些系统上如果提供了无效的signum或handler不是SIG_DFL、SIG_IGN或有效的函数指针signal()可能会失败并返回SIG_ERR。 注意事项 signal()的行为在不同版本的POSIX标准和不同的Unix系统之间有所不同特别是关于信号处理函数的重新安装性。某些系统遵循传统BSD语义而另一些则遵循POSIX.1-1990或POSIX.1-2001语义。对于实时信号如SIGRTMIN到SIGRTMAX之间的信号推荐使用sigaction()函数来代替signal()因为它提供了更精细的控制和更一致的跨平台行为。 示例 下面是一个简单的示例展示了如何使用signal()来捕获SIGINT通常是CtrlC信号并忽略它使得进程在接收到此信号时终止 #includeiostream #includeunistd.h #include signal.h #includecstdio using namespace std;void signal_hander(int signum) {printf(Caught SIGINT, but ignoring...\n);exit(0); }int main() {signal(2,signal_hander);while(true){cout process running ... endl;sleep(1);} }我们重新编译一下运行一下 我们又用信号2来试验一下 后台程序 大家发现没有如果我们运行process此时我们输入命令行是没有用的 如果我们不想这样我们可以把它放在后台只要后面带一个就行 此时再用Ctrl C是无法结束后台进程的 此时只用两种办法第一种用信号或者pkill 进程名 第二种让后台程序回到前台 后台程序一运行时会有一个编号此时fg 编号可以让后台程序回到前台 回到前台就可以使用Ctrl C。 前台转后台 快捷键Ctrl Z可以让前台程序停止转向后台 命令行jobs可以看到所有的后台程序 如果我们想开启我们使用bg 序号 就可以让程序在后台运行。 检测输入 我们输入Ctrl Z等这些组合键操作系统识别键盘输入的过程大致如下 硬件层面现代键盘通常通过USB或无线连接与计算机通信以前的老式键盘可能使用PS/2接口。当用户按下键盘上的一个键时键盘硬件会生成一个电信号这个信号代表了特定按键的扫描码。中断请求键盘控制器将这个信号转换成键盘中断请求并发送给计算机的中断控制器。中断是CPU对外部事件的一种快速响应机制它能够暂停当前正在执行的任务转而处理紧急的外部事件。中断处理CPU接收到中断请求后会保存当前任务的状态如程序计数器等然后跳转到中断处理程序的入口地址执行。对于键盘中断这个处理程序通常是操作系统的一部分。读取扫描码在中断处理程序中操作系统会读取键盘控制器中的数据寄存器获取按键的扫描码。扫描码是一个独一无二的标识对应于键盘上的每一个键。转换为ASCII码或虚拟键码操作系统接着会将扫描码转换为操作系统内部可以理解的形式如ASCII码用于文本字符或虚拟键码用于功能键和特殊键。这个过程可能涉及查表或其他映射机制。事件队列与应用程序转换后的字符或按键信息会被封装成一个事件并放入系统的消息队列中。等待处理的事件包括按键按下和释放等。当应用程序如文本编辑器调用相应的API如Windows的 GetMessage 或 Linux 的 select/poll检查消息队列时操作系统会将这些事件传递给应用程序。应用程序响应应用程序根据接收到的键盘事件执行相应的操作比如在文本框中显示字符或响应快捷键命令。释放中断一旦中断处理完成操作系统会恢复之前被中断的任务状态继续执行。 整个过程确保了用户在键盘上的输入能够迅速、准确地被操作系统捕捉并传递给正在运行的应用程序。 中断向量表 这里面还有一个中间向量表 中断向量表是计算机系统中一个非常关键的数据结构它存储了所有中断服务程序ISRInterrupt Service Routines的入口地址。这些中断服务程序负责处理各种硬件或软件触发的中断事件。以下是中断向量表的一些关键特性与作用 内存中的固定位置中断向量表通常位于内存中的一个固定位置使得CPU在任何时候都能迅速访问到它。在某些体系结构中比如x86中断向量表可能位于低地址区域便于快速响应中断。条目结构表中的每个条目对应一个中断类型或中断源条目内包含的是相应中断服务程序的起始地址或者是一个跳转指令间接指向实际的中断处理程序。每个条目可能占用2个、4个或更多字节具体取决于处理器架构。中断类型号与向量地址中断类型号是一个标识特定中断的数字。在一些系统中中断类型号乘以某个固定值如4可以得到该中断向量在中断向量表中的地址这样CPU就能根据中断类型快速定位到正确的中断处理程序。中断响应过程当CPU检测到一个中断请求时它会立即停止当前的任务执行保存现场即当前的处理器状态然后根据中断类型号查询中断向量表获取中断服务程序的入口地址并跳转到该地址开始执行中断处理程序。复位与初始化在系统启动或复位时中断向量表的基地址会被初始化到一个预定义的位置。某些处理器如ARM Cortex-M系列允许通过VTOR向量表偏移寄存器来重新定位中断向量表的位置以适应不同的系统配置需求。固定与动态分配在一些简单的系统中中断向量表可能是静态定义的而在更复杂的系统中部分中断向量可能支持动态分配允许操作系统或固件在运行时安装或更改中断服务例程的地址。 中断向量表的设计和管理是确保系统能够高效、可靠地响应各种内外部事件的基础对于维持系统的实时性和稳定性至关重要。
http://www.hkea.cn/news/14330933/

相关文章:

  • 青海餐饮网站建设公司wordpress前台
  • 做网站模板 优帮云seo搜索引擎优化实战
  • 网站建设合同前期需注意哪些问题包头网站建设公司
  • 服装公司做哪个网站网站开发项目分析模板
  • 58同城建网站怎么做深圳宝安大型网站建设
  • 网站 产品图片 尺寸移动互联网开发培训
  • 计算机应用技术网站开发西南能矿建设工程公司网站
  • 商业网站设计方案wordpress 改地址
  • 网站左右箭头素材sspai 少数派wordpress
  • 可以做海报的网站电子商务平台经营者有哪些义务
  • dw设计做网站案例网站权重批量查询
  • 在网站制作前需要有哪些前期策划工作简约 网站 设计
  • 哪种nas可以做网站服务器有什么好黄页网站
  • 外贸公司 网站android app for wordpress
  • 网站怎么做七牛云加速好看的网页配色
  • 网站开发所需要的技术江苏seo百度推广
  • 前端和后端哪个就业前景好网站页面优化签象客
  • 回收网站怎么做瑞典网站后缀
  • 北京 响应式网站建设做衣服外单网站有哪些
  • 平邑网站定制wordpress 中 水印
  • 搭建网站要什么配置搜索引擎广告优化
  • 网站做快照廊坊文安建设局网站
  • 企业门户网站开发代码西安发布
  • 哪些公司做外贸网站好seo网络优化是什么意思
  • 影视传媒广告公司网站模板四川任命33名干部最新
  • 科技公司网页设计欣赏网站优化 seo和sem
  • 网站开发工作流审批流如何做网站优化
  • ug编程培训广州seo诊断
  • 滨州做网站优化东莞东城邮编
  • 短网站生成泰安东平房产信息网