找回密码
 注册
查看: 1521|回复: 4

sigaction在C++中怎么调用?

[复制链接]
发表于 2006-8-29 15:35:02 | 显示全部楼层 |阅读模式
[code:1]
void tcp_read_thread::test(int s)
{
}
tcp_read_thread::tcp_read_thread()
{
    act.sa_handler = test
}
[/code:1]

在c下面可以很好编译通过的程序,在C++中就编不过了。
报:  错误:实参类型为 ‘void (tcp_read_thread:(int)’,与 ‘void (*)(int)’ 不匹配
发表于 2006-8-29 15:54:35 | 显示全部楼层
static
回复

使用道具 举报

 楼主| 发表于 2006-8-30 09:16:58 | 显示全部楼层
谢谢,编译通过了,能解释下吗?
回复

使用道具 举报

发表于 2006-8-30 19:44:45 | 显示全部楼层
这个只能是全局函数,不能是类的成员。
因此如果要写在类中只能用 static
回复

使用道具 举报

 楼主| 发表于 2006-8-31 17:46:02 | 显示全部楼层
谢谢WeiMingzhi
今天又发现了问题,原来编译是通过了,函数却没有执行!!!
在头文件中将test()声明为static。
我是在tcp_read_thread的初始化函数中装载handler,
实际上是一个tcp server程序。test()接受僵死的子进程,而fork()是在另外一个成员函数中调用的。
从c转到c++不久,不知道以上做法是否正确
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2025-2-6 15:47 , Processed in 0.023926 second(s), 15 queries .

© 2001-2025 Discuz! Team. Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表