请问qt中,如何让自己写的程序每天定时运行

代码:
void show_mess ( char * mess ) {
        GtkWidget *dialog = gtk_message_dialog_new (NULL,
                GTK_DIALOG_MODAL,
                GTK_MESSAGE_QUESTION,
                GTK_BUTTONS_OK,
                mess
                );
        gtk_dialog_run (GTK_DIALOG (dialog));
        gtk_widget_destroy (dialog);
}

在一个mysql数据库gui查询的小项目里,我写了这个函数用来响应打印提示信息,有好几个问题:

1,我在一个gui的登录框里设置了几个Entry,用来接收用户输入的帐号和密码信息,底下有两个按钮,一个OK,一个CANCEL,CANCEL直接callback至gtk_main_quit()。那个OK的按钮 callback至一个函数,这个函数先判断帐号和密码是不是为空,我的想法是这样的,是空的话就调用上述函数打印一个提示,等待点击OK后返回到登录框重新输入,因此判断后没有调用gtk_main_quit(),判断不为空时则调用gtk_main_quit(),并启动下一个模块。但运行的时候发现帐号和密码有为空时,点击提示框的OK后没有再让输入信息就直接跳到下一个模块了,导致后面出错。在那个提示框点击OK后发生了什么事?怎么解决它?

2,我输入不正确的帐号和密码后,启动下一个模块进行mysql连接,然后pthread_create()创建一个子进程调用上述函数打印连接信息及使用的用户名,sleep1秒后用kill(pid,9)结束了这个进程达到了自动关掉提示框的效果,接着使用mysql_real_connect()进行连接数据库并判断是否成功,不成功则调用上述函数打印提示。就是这个时候,程序运行终止,被调试出来显示这里发生了段错误。上述这个函数被调用了两次,是不是第一次调用的时候并没有真正在内存中注销而引发了错误?或者其他原因?

3,我尝试着去解决第一个问题,然而又有引出了个新问题。我将登录框另外写至了一处,姑且称之为chklogin模块,不为空的话则返回1,部分代码如下,后来我运行发现,第一个问题可以实现,没有输入的时候打印了提示,并在点击OK的按钮后重新回到了登录框。但问题来了,第一的登录框并没有消失,而且活动的很好,可以输入也可以提交。也就是说有多少次重新登录就有多少个对话框在那,pthread_kill那函数似乎没起作用,有意思的是,我点击登录框中的CANCEL,那按钮callback了gtk_main_quit后,那么多的登录款一块没了,很正常的没了。请问下大家,这是为什么?
gtk中文文档很少,英文文档看得晕呼呼的,原谅在下的无知

代码:
        while (! Islogok) {
                if ( pthread_create(& chk_login, NULL, chklogin, NULL ) ) {
                        fprintf ( stderr, "Create pthread failed! exit main...\n" );
                        exit ( EXIT_FAILURE ) ;
                }
                pthread_join ( chk_login, NULL );
                pthread_kill ( chk_login, 9 );
                if ( !strcmp(host_name,"") && ! strcmp(user_name,"") )
                { /*If host_name or user_name is NULL,chklogin again*/
                        Islogok = 0;
                        show_mess (blank_mess);
                }
                else  /* All field filled */
                        Islogok = 1;
        }

作者: oxangen   发布时间: 2011-04-26