1。默认情况下,信号将由主进程接收和处理,即使信号处理函数是由子线程注册的。2.每个线程都有自己的信号屏蔽字,sigprocmask函数可以用来屏蔽一个线程对信号的响应,只留下需要处理信号的线程来处理指定的信号。3.对于一个信号处理函数,以程序执行时最后注册的处理函数为准,即在所有线程中,同一信号必须处理任意线程中的同一信号。4.可以用pthread_kill说每个线程都有自己的信号掩码。
这意味着尽管单个线程可以阻塞一些信号,但是当一个线程修改与信号相关的处理行为时,所有线程共享处理行为的改变。这样,如果一个线程选择忽略一个信号,其他线程可以恢复该信号的默认处理行为,或者为该信号设置一个新的处理程序,这样就可以撤销上述线程的信号选择。进程中的信号被发送到单个线程。如果信号与硬件故障或计时器 timeout有关,则模型被发送到导致事件的线程,而其他信号被发送到任何线程。
7、怎样查询 linux系统调用函数如果用系统调用号调用函数,不如直接用函数名调用。在程序集中也支持用函数名调用。先按参数再调用就行了。下面是Linux系统调用的列表,包括最常用的系统调用和从系统调用派生的函数。这可能是你在网上能看到的唯一一个带中文注释的Linux系统调用列表。即使是简单的英文字母列表也不多见。
根据笔者的理解,大致进行了分类,同时也做了一些小的修改,比如删除了几个只供内核使用,不允许用户调用的系统调用,对一些我觉得稍有不妥的地方做了一些小的修改,对所有列出的系统调用附上了简短的注释。其中一些函数的功能完全相同,但参数不同。也许很多熟悉C 的朋友可以马上想到函数重载,但是别忘了Linux内核是用C语言写的,所以只能用不同的函数来命名。
8、 linux进程间通讯的几种方式IPC(inter process communication)是一组编程接口,它使程序 staff能够协调不同的进程,使它们在一个操作系统中同时运行,并相互传递和交换信息。这使得a 程序能够同时处理许多用户的需求。因为即使只有一个用户发出请求,也可能导致一个操作系统中多个进程的运行,进程之间必须互相对话。IPC接口提供了这种可能性。
1.未知管道通信未知管道:管道是半双工通信方式,数据只能单向流动,只能在有亲缘关系的进程之间使用。进程的亲缘关系通常是指父子进程关系,2.高级管道通信高级管道(popen):当另一个程序作为当前程序进程中的新进程启动时,被认为是当前程序的子进程,这种方式称为高级管道模式。3.命名管道通信:命名管道也是一种半双工通信模式,但它允许不相关的进程之间进行通信。