[求助]消息函数不能操作gtk的嵌入浏览器--普通函数却可以?

软件和网站开发以及相关技术探讨
回复
头像
jcsu
帖子: 2
注册时间: 2007-05-11 18:17

[求助]消息函数不能操作gtk的嵌入浏览器--普通函数却可以?

#1

帖子 jcsu » 2009-02-03 16:43

如题:
在用gtk写一个嵌入式浏览器的时候碰到的奇怪问题,大概描述一下...
消息函数 void OnComm(int sig) 响应信号量SIGUSR2

代码: 全选

struct sigaction act_port, oldact_port;
	act_port.sa_handler =OnComm;
	sigemptyset(&act_port.sa_mask);
	sigaddset(&act_port.sa_mask, SIGUSR2); //添加SIGUSR2信号响应OnComm函数
	act_port.sa_flags = 0;
	sigaction(SIGUSR2, &act_port, &oldact_port);
函数中有条语句控制浏览器转跳到指定地址:

代码: 全选

.
.
.
GoHome("XXX/index_t.jsp?IsBusy=1");//功能和在浏览气地址栏输入“XXX/index_t.jsp?IsBusy=1”一样
.
.
.
还有个普通函数 void Init_browser() 在程序初始化的时候调用,初始化浏览器。函数同样有条跟OnComm一样的地址转跳语句:

代码: 全选

.
.
.
GoHome("XXX/index_t.jsp?IsBusy=0");//功能和在浏览气地址栏输入“XXX/index_t.jsp?IsBusy=0”一样
.
.
.
在程序初始化的时候调用函数Init_browser执行了GoHome,浏览器转到了指定地址,但是在给程序发SIGUSR2信号的时候调用OnComm执行了GoHome语句,浏览器却没有反应(测试过与转跳地址无关)。
GoHome函数如下:

代码: 全选

...
GtkMozEmbed * browser;
...
void GoHome(char * url)
{
	char tmpURL[128];
	strcpy(tmpURL,Host);
	strcat(tmpURL,url);
	gtk_moz_embed_load_url(browser,(gchar *)tmpURL);
}
是不是信号函数和普通函数有区别,想不明白为什么会出现这情况呢...
请教下,有人能知道问题何在吗? :em23
回复