请教:一个进程后台执行(无界面),想使用这个进程弹出一些窗口

发布于 2022-10-15 05:01:05 字数 2875 浏览 21 评论 0

使用gtk完成弹窗,多线程,但是总是提示有问题,附上源码,请教啦~

  1. void thread_welcome(void)
  2. {
  3.         show_welcome();
  4.         pthread_exit(0);
  5. }
  6. void thread_warning(void)
  7. {
  8.         show_warning();
  9.         pthread_exit(0);
  10. }
  11. int main()
  12. {
  13.         int i = 0;
  14.         int ret[2];
  15.         pthread_t id[2];
  16.         while(1){
  17.                 sleep(2);
  18.                 if(i%2==1) {
  19.                         ret[0] = pthread_create(&id,NULL,(void *) thread_welcome,NULL);
  20.                         if(ret[0]!=0){
  21.                                 printf ("Create pthread error!\n");
  22.                                 exit (1);
  23.                         }
  24.                 } else {
  25.                         ret[1] = pthread_create(&id,NULL,(void *)thread_warning,NULL);
  26.                         if(ret[1]!=0){
  27.                                 printf ("Create pthread error!\n");
  28.                                 exit (1);
  29.                         }
  30.                 }
  31.                 i++;
  32.         }
  33.         return 0;
  34. }

复制代码

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

脱离于你 2022-10-22 05:01:05
  1. void show_warning()
  2. {
  3.     GtkWidget *dialog;//声明一个对话框
  4.     get_day(day);
  5.     sprintf(info,"infomation_warning");
  6.     gtk_init(NULL, NULL);//初始化GTK
  7.     //使用gtk_message_dialog_new()函数新建一个消息对话框
  8.     dialog = gtk_message_dialog_new(NULL,                //没有父窗口
  9.              GTK_DIALOG_DESTROY_WITH_PARENT,             //跟随父窗口关闭
  10.              GTK_MESSAGE_ERROR,                        //显示警告图标
  11.              GTK_BUTTONS_OK,                             //显示OK按钮
  12.              info);
  13.     gtk_window_set_title(GTK_WINDOW(dialog), "提示");//对话框的标题
  14. //    gtk_window_position(GTK_WINDOW(dialog),GTK_WIN_POS_MOUSE);
  15.     gtk_dialog_run(GTK_DIALOG(dialog));//运行对话框
  16.     gtk_widget_destroy(dialog);//删除对话框
  17. }
  18. void show_welcome()
  19. {
  20.     GtkWidget *dialog;//声明一个对话框
  21.     get_sn(sn);
  22.     sprintf(info,"information_welcome");
  23.     gtk_init(NULL, NULL);//初始化GTK
  24.     //使用gtk_message_dialog_new()函数新建一个消息对话框
  25.     dialog = gtk_message_dialog_new(NULL,                //没有父窗口
  26.              GTK_DIALOG_DESTROY_WITH_PARENT,             //跟随父窗口关闭
  27.              GTK_MESSAGE_INFO,                        //显示警告图标
  28.              GTK_BUTTONS_OK,                             //显示OK按钮
  29.              info);
  30.     gtk_window_set_title(GTK_WINDOW(dialog), "提示");//对话框的标题
  31.     gtk_dialog_run(GTK_DIALOG(dialog));//运行对话框
  32.     gtk_widget_destroy(dialog);//删除对话框
  33. }

复制代码

当爱已成负担 2022-10-22 05:01:05

问题问的有点外行,呵呵,gtk多线程应该用g_thread_init(),gdk_thread_init()等接口,而不是pthread,呵呵

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文