可再入函数-cadence入门教程

时间:2024-07-02 09:20:04
【文件属性】:

文件名称:可再入函数-cadence入门教程

文件大小:5.91MB

文件格式:PDF

更新时间:2024-07-02 09:20:04

Unix linux 环境 编程

10.6 可再入函数 进程捕捉到信号并继续执行时,它首先执行该信号处理程序中的指令。如果从信号处理程 序返回(例如没有调用 e x i t或l o n g j m p),则继续执行在捕捉到信号时进程正在执行的正常指令 序列(这类似于硬件中断发生时所做的)。但在信号处理程序中,不能判断捕捉到信号时进程 执行到何处。如果进程正在执行 m a l l o c,在其堆中分配另外的存储空间,而此时由于捕捉到信 号插入执行该信号处理程序,其中又调用 m a l l o c,这时会发生什么 ?又例如若进程正在执行 g e t p w n a m(见6 . 2节)这种将其结果存放在静态存储单元中的函数,而插入执行的信号处理程 序中又调用这样的函数,这时又会发生什么呢 ? 在m a l l o c例中子,可能会对进程造成破坏,因 为m a l l o c通常为它所分配的存储区保持一个连接表,而插入执行信号处理程序时,进程可能正 在更改此连接表。在 g e t p w n a m的例子中,正常返回给调用者的信息可能由返回至信号处理程 序的信息覆盖。 P O S I X . 1说明了保证可再入的函数。表1 0 - 3列出了这些可再入函数。图中四个带*号的函数 并没有按P O S I X . 1说明为是可再入的,但SVR4 SVID 〔AT&T 1989〕则将它们列为是可再入的。 表10-3 信号处理程序中可以调用的可再入函数 _ e x i t f o r k p i p e s t a t a b o r t * f s t a t r e a d s y s c o n f a c c e s s g e t e g i d r e n a m e t c d r a i n a l a r m g e t e u i d r m d i r t c f l o w c f g e t i s p e e d g e t g i d s e t g i d t c f l u s h c f g e t o s p e e d g e t g r o u p s s e t p g i d t c g e t a t t r c f s e t i s p e e d g e t p g r p s e t s i d t c g e t p g r p c f s e t o s p e e d g e t p i d s e t u i d t c s e n d b r e a k c h d i r g e t p p i d s i g a c t i o n t c s e t a t t r c h m o d g e t u i d s i g a d d s e t t c s e t p g r p c h o w n k i l l s i g d e l s e t t i m e c l o s e l i n k sigemptyset t i m e s c r e a t l o n g j m p * s i g f i l l s e t u m a s k d u p l s e e k s i g i s m e m b e r u n a m e d u p 2 m k d i r s i g n a l * u n l i n k e x e c l e m k f i f o s i g p e n d i n g u t i m e e x e c v e o p e n s i g p r o c m a s k w a i t e x i t * p a t h c o n f sigsuspend w a i t p i d f c n t l p a u s e s l e e p w r i t e 第 1 0章 信 号 2 0 9


网友评论