UNIX C关于子进程的两个问题?

binb 2000-07-04 12:34:00
1。 如何让进程只捕获信号,而不要动作?
即signal(SIGUSR1, xx)中xx是什么?(SCO 5.0)
2。 signal(SIGUSR2, sig)的返回值是函数sig的返回
值吗?若不是,如何取得sig的返回值?
...全文
182 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
binb 2000-07-12
  • 打赏
  • 举报
回复
再请问一句:我怎么知道signal已取得信号?
vagabond 2000-07-12
  • 打赏
  • 举报
回复
1。 如何让进程只捕获信号,而不要动作?
即signal(SIGUSR1, xx)中xx是什么?(SCO 5.0)
xx表示的是一个函数指针。
可以使用函数:
signal(SIGUSR1,SIG_IGN)
忽略对SIGUSR1的信号操作。

2。 signal(SIGUSR2, sig)的返回值是函数sig的返回值吗?若不是,如何取得sig的返回值?

不是,是原来绑定在SIGUSR2上的函数。



DreamChao 2000-07-11
  • 打赏
  • 举报
回复
那你在空函数里加入一条打印信息即可。
当信号被捕捉到就回调用那个函数,然后打印信息。
binb 2000-07-07
  • 打赏
  • 举报
回复
?
fjp 2000-07-04
  • 打赏
  • 举报
回复
1.xx是与该信号关联的动作,它是一个函数指针,当进程捕获到该信号后,就执行它所指的函数。定义空关联函数即可既捕获信号又不动作。例如:
void xx(int signo)
{
//do nothing!
}
xx的原型为void (*xx)(int), 然不返回值。
2.一般每个信号都与一个函数关联,调用signal,它一是置新的关连函数,二是返回前一关联函数指针。
signal的原型为void (*signal (int sig, void (*func) (int))) (int);
关于返回值的问题已很明显了。
3.关于信号这个主题可找些资料看看以加深理解。
binb 2000-07-04
  • 打赏
  • 举报
回复
我是指捕捉到信号,主程序就转移
否则继续
binb 2000-07-04
  • 打赏
  • 举报
回复
再请问如何知道signal已捕捉到信号?

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧