免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12
最近访问板块 发新帖
楼主: wang9736
打印 上一主题 下一主题

[函数] 能给信号处理函数传入任意类型形参吗? [复制链接]

论坛徽章:
0
11 [报告]
发表于 2007-10-24 14:41 |只看该作者
原帖由 wang9736 于 2007-10-24 14:17 发表

func()
{
    signal(SIGPIPE,handle)
   int num;
   在这里通过函数调用给num赋值

}

void handle()
{
   这里要使用num 你说怎么能访问到吧
}

handle定义在func 外面说num没有定义,还不能 ...


如果num在函数体内不确定什么时候会改变(可能在信号来之前也可能在信号到来后),就象scutan说的用一个全局指针就可以了.

论坛徽章:
0
12 [报告]
发表于 2007-10-24 14:59 |只看该作者
原帖由 wang9736 于 2007-10-24 14:17 发表

func()
{
    signal(SIGPIPE,handle)
   int num;
   在这里通过函数调用给num赋值

}

void handle()
{
   这里要使用num 你说怎么能访问到吧
}

handle定义在func 外面说num没有定义,还不能 ...


int num = 初始值;

func()
{
    signal(SIGPIPE,handle)
   在这里通过函数调用给num赋值

}

void handle()
{
   这里使用num
}

[ 本帖最后由 xB1ue 于 2007-10-24 15:01 编辑 ]

论坛徽章:
0
13 [报告]
发表于 2007-10-24 15:07 |只看该作者
原帖由 baohuaihuai 于 2007-10-24 14:41 发表


如果num在函数体内不确定什么时候会改变(可能在信号来之前也可能在信号到来后),就象scutan说的用一个全局指针就可以了.

num 在这个线程里一直不变
fun1实际上是一个线程函数 每个线程都有一个num 。
怎么用全局指针?这个指针定义在哪里能保证不被其他线程使用?如果在我定义线程函数的func.cpp里

int num;//在func里面得到num后就存在这里

void* func()
{


}

这个num不也是全局变量吗 ?只是不能被其他文件中的函数使用。只定义这一个能保证不被其他线程改变?

我想到一个办法 记录每个线程的tid和对应的num    怎么样?

论坛徽章:
0
14 [报告]
发表于 2007-10-24 20:46 |只看该作者
我有个想法,就是用非局部跳转setjmp,跳到局部变量num的作用范围去 比你这个还怪异吧

论坛徽章:
0
15 [报告]
发表于 2007-10-24 21:49 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
16 [报告]
发表于 2010-03-06 09:20 |只看该作者
本帖最后由 lanying_wzw 于 2010-03-06 09:31 编辑

用管道可以吗?把管道描述符复制到标准输入
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP