主函数里有 lenth 这个变量,我想用信号处理函数处理它,那么是不是除了将lenth这个变量定义成全局变量,就没有其他方法了?能不能将length这个变量传给信号处理函数呢?
我看书上好像信号处理函数只能有一个参数,是传递信号量的。
signal( SIGALRM, hand )
如果不能传参数给信号处理函数,那么我要是有好多变量要给信号处理函数处理,那么我就要定义好多全局变量,那程序太乱了。。。。。。求大神,有没有其他神奇的方法。。。。。
求大神
6 个解决方案
#1
没办法, 你可以把全局变量收集到一个结构体里.
#2
将 主函数里的 lenth 变量,传递给另一个函数,然后在 信号处理函数 中调用这个 函数
#3
很遗憾 hand也不是变量 而是处理函数的函数指针
#4
可以用sigaction加上SA_SIGINFO标志。
#5
++
void (*sa_sigaction)(int signo, siginfo_t * siginfo, void * args)
#6
不能传,那个函数基本上跟signal一样
第二个参数只是信号的信息,
第三个参数没有用到
#1
没办法, 你可以把全局变量收集到一个结构体里.
#2
将 主函数里的 lenth 变量,传递给另一个函数,然后在 信号处理函数 中调用这个 函数
#3
很遗憾 hand也不是变量 而是处理函数的函数指针
#4
可以用sigaction加上SA_SIGINFO标志。
#5
可以用sigaction加上SA_SIGINFO标志。
++
void (*sa_sigaction)(int signo, siginfo_t * siginfo, void * args)
#6
可以用sigaction加上SA_SIGINFO标志。
++
void (*sa_sigaction)(int signo, siginfo_t * siginfo, void * args)
不能传,那个函数基本上跟signal一样
第二个参数只是信号的信息,
第三个参数没有用到