Welcome 微信登录
编程资源 图片资源库 蚂蚁家优选 PDF转换器

首页 / 操作系统 / Linux

一步一步学Linux C:信号处理方法 && 实际应用

一步一步学Linux C:信号处理方法 && 实际应用

信号是用于一步事件的。当一个信号发生时,程序会按照已经设定好的程序来执行相应的操作。进程对信号处理的方法一般有两种:1、捕捉信号:当一个信号发送个进程时,该进程会调用此信号注册的信号处理函数,来完成相应的操作。对应于每个信号系统一般会有相应的默认处理函数(一般为终止进程)。所以可以设置信号为默认的处理函数。2、忽略信号。当信号发送时,进程忽略信号。注:有两个信号是无法捕捉和忽略的SIGKILL和SIGSTOP。它们是提供给管理员,可以在任何时刻终止某个进程...
一步一步学Linux C:signal 和sigaction

一步一步学Linux C:signal 和sigaction

要对一个信号进行处理,就需要给出此信号发生时系统所调用的处理函数。可以对一个特定的信号(除去SIGKILL和SIGSTOP信号)注册相应的处理函数。注册某个信号的处理函数后,当进程接收到此信号时,无论进程处于何种状态,就会停下当前的任务去执行此信号的处理函数。1、注册信号函数。#include<signal.h>void(*signal(intsignumber,void((*func)(int))(int)signumber表示信号处理函数对...
一步一步学Linux C:信号集及操作

一步一步学Linux C:信号集及操作

在实际的应用中一个应用程序需要对多个信号进行处理,为了方便,linux系统引进了信号集的概念。信号集用多个信号组成的数据类型sigset_t.可用以下的系统调用设置信号集中所包含的数据。1、常见信号及定义如图:2、sigset_t在linux2.6.39/include/asm-generic/signal.h中定义typedefstruct{unsignedlongsig[_NSIG_WORDS];}sigset_t;3、相应的系统调用函数:#inclu...
一步一步学Linux C:信号具体含义解释

一步一步学Linux C:信号具体含义解释

信号及其简介信号是一种进程通信的方法,他应用于异步事件的处理。信号的实现是一种软中断。它被发送为一个正在运行的进程,已告知进程某个事件发生了。1) SIGHUP 本信号在用户终端连接(正常或非正常)结束时发出,通常是在终端的控制进程结束时, 通知同一session内的各个作业,这时它们与控制终端不再关联.2) SIGINT 程序终止(interrupt)信号,通常是从终端发出中断指令如ctrl+c或delete键3) SIGQUIT 和SIGINT类似,但...
一步一步学Linux C:sigprocmask 阻塞进程

一步一步学Linux C:sigprocmask 阻塞进程

1、有时候不希望在接到信号时就立即停止当前执行,去处理信号,同时也不希望忽略该信号,而是延时一段时间去调用信号处理函数。这种情况是通过阻塞信号实现的。2、信号阻塞和忽略信号的区别。阻塞的概念和忽略信号是不同的。操作系统在信号被进程解除阻塞之前不会讲信号传递出去,被阻塞的信号也不会影响进程的行为,信号只是暂时被阻止传递。当进程忽略一个信号时,信号会被传递出去但进程会将信号丢弃。3、信号阻塞系统调用,它们的都起到阻塞的作用,它们不是协作使用的。#include...
一步一步学Linux C:sigsuspend 进程阻塞

一步一步学Linux C:sigsuspend 进程阻塞

int sigsuspend(const sigset_t *sigmask);此函数用于进程的挂起,sigmask指向一个信号集。当此函数被调用时,sigmask所指向的信号集中的信号将赋值给信号掩码。之后进程挂起。直到进程捕捉到信号,并调用处理函数返回时,函数sigsuspend返回。信号掩码恢复为信号调用前的值,同时将errno设为EINTR。进程结束信号可将其立即停止。#include<stdio.h> #include<sig...
一步一步学Linux C:alarm

一步一步学Linux C:alarm

alarm()用来设置信号SIGALRM在经过参数seconds指定的秒数后传送给目前的进程。如果参数seconds 为0,则之前设置的闹钟会被取消,并将剩下的时间返回。信号正常发送时返回值为0。若新的报警设置在前一次设定尚未结束时,发送,则返回前一次设置所剩时间。返回之前闹钟的剩余秒数,如果之前未设闹钟则返回0。alarm()执行后,进程将继续执行,在后期(alarm以后)的执行过程中将会在seconds秒后收到信号SIGALRM并执行其处理函数。使用a...
一步一步学Linux C:setitimer

一步一步学Linux C:setitimer

setitimer:和alarm相似,但可以更精确的控制进程。which表示计时方式。value和oldvalue是指向itmerval指针。setitimer()调用成功返回0,否则返回-1。which取值:ITIMER_REAL : 以系统真实的时间来计算,它送出SIGALRM信号。ITIMER_VIRTUAL : 以该进程在用户态下花费的时间来计算,它送出SIGVTALRM信号。ITIMER_PROF : 以该进程在用户态下和内核态下所费的时间来计算...
一步一步学Linux C:信号处理潜在危险!!!

一步一步学Linux C:信号处理潜在危险!!!

信号作为异步进程的通信方式,在实际应用中是方便而实用的。但是,也应该注意到在使用信号时的潜在危险。在此简单介绍几种可能引发错误的具体情况,希望在实际进行信号处理时特别注意。当注册了一个信号处理函数时,可能会对某些系统调用进行修改。通常来讲,它们本来应是不受信号的影响,但由于注册了一个信号处理函数,系统可能会认为在一个信号到来时需要中断原系统调用。当这种情况发生时,原系统调用被终止,返回调用失败值,同时errno将被设置为EINTR。当然有一些时候,确实希望...
一步一步学Linux C:文件类型和属性

一步一步学Linux C:文件类型和属性

文件是有名字的一组相关信息的集合,在Linux 系统中,文件的准确定义是不包含有任何其他结构的字符流。通俗地说,就是文件中的字符与字符之间除了同属于一个文件之外,不存在任何其他的关系。文件中字符的关系,是由使用文件的应用程序来建立和解释的。每一个文件都具有特定的属性。Linux 系统的文件属性比较复杂,主要包括文件类型和文件权限两个方面。1.文件类型Linux下的文件可以分为5 种不同的类型。它们是普通文件、目录文件、链接文件、设备文件和管道文件。下面给出...
一步一步学Linux C:Linux文件组织信息

一步一步学Linux C:Linux文件组织信息

与Linux 系统中的文件相关的信息有三项。它们是文件的目录结构、索引节点和文件的数据本身。1.文件的目录结构系统的每一个目录都处于一定的目录结构中,该结构含有目录中所有的目录项的列表,每一个目录项都含有一个名称和索引节点。借助于名称,应用程序可以访问目录项的内容。而索引节点号则提供了所需引用文件自身的信息。2.索引节点在Linux 系统中,所有的文件都有一个与之相连的索引节点(inode)。索引节点是用来保存文件信息的。索引节点包含如下信息。在linux...
<< 3341 3342 3343 3344 3345 3346 3347 3348 3349 3350 >>