当前位置:  技术问答>linux和unix

进程控制问题,求达人指教

    来源: 互联网  发布时间:2016-01-26

    本文导语:  switch(event->keyval)   {         case GDK_Return:             if(player==1)             {                  child_pid=fork();          if(child_pid==-1)          { return;  }  if(child_pid==0)      ...

switch(event->keyval)
  {
        case GDK_Return:
            if(player==1)
            {
                 child_pid=fork();
         if(child_pid==-1)
         {
return;
 }
 if(child_pid==0)
                 {
                     memset(buf,0,sizeof(gint)*7);
                     len=recv(clifd1,buf,sizeof(gint)*7,0); 
                     if(len==sizeof(gint)*7)
                     { 
    whiteflag=1;
                            g_print("%dn",buf[0]);
    g_print("%dn",buf[1]);
    g_print("%dn",buf[2]);
    g_print("%dn",buf[3]);
    g_print("%dn",buf[4]);
    g_print("%dn",buf[5]);
    g_print("%dn",buf[6]);
                            num=buf[2]*(LINE+1)+buf[1];
    g_print("%dn",num);
                            MyStoreItem[num].type=buf[0];
                            MyStoreItem[num].x=buf[1];
                            MyStoreItem[num].y=buf[2];
                            MyStoreItem[num].dir.udnum=buf[3];
                            MyStoreItem[num].dir.rdnum=buf[4];
                            MyStoreItem[num].dir.rlnum=buf[5];
                            MyStoreItem[num].dir.ldnum=buf[6];
                     }
                 }

 if(player==1&&whiteflag==1)
 {
                   exit(statu);
                 }
          }
          gtk_widget_set_sensitive(widget,0);

 
          GTK_WIDGET_SET_FLAGS(ft_table, GTK_CAN_FOCUS); //使ft_table能
                                                                              //得到焦点
          gtk_widget_grab_focus(ft_table);                //设置焦点
                 
          gtk_widget_hide(draw_area);
          gtk_widget_show(draw_area);

          break;
      default :
          break;


上面是程序部分代码,g_print函数只是用来调试的,我看看到底接受到对方传来的数据没有,在程序中我用fork(),创建一个进程,在进程中接受数据,在程序后面,调用exit()来结束创建的进程,问题就出现了,如果调用exit(),那么通过调试信息,确实得到对方传来的数据,但是就是不会将传来的棋子信息画在棋盘上,但是如果不调用exit()函数,那么就可以将棋子正确的画在棋盘上了,不过会提示错误,大概就是没有结束创建的进程吧,那个错误我也没有看明白,求教达人,该在何处,如何结束创建的进程,使程序正常?

|
你的gtk程序,要用thread。 gdk_thread....

    
 
 

您可能感兴趣的文章:

  • 请教下linux达人 相关版本2.6的进程调度
  • 关于linux进程和线程的疑问!请教达人!
  • 如何取得另一个进程的环境变量? 请指教!
  • linux 内核进程堆问题,大家指教
  • linux下的一个进程通信问题,请指教。
  • 内核进程线程问题,大家指教
  • kernel 进程创建的实现,初级问题,大家指教
  • 请高手指教,用Runtime.exec()启动进程后不返回怎么办?
  • fork 父进程动态刷新,子进程做操作反馈给服务器,不能实现,求指教
  • 新看APUE,关于进程方面的问题,求大家指教...
  • 请高手指教一下进程打开的File对象相关的几个问题
  • 关于进程的小问题,请指教!!!
  • 紧急求救:select轮循,单进程处理多个客户连接问题(TCP/IP),那为大大指教,小弟不胜感激!!代码如下:
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 后台进程和与控制终端断开的进程是一个意思吗?
  • 如何控制子进程创建子进程
  • unix进程问题,为什么关了控制界面进程结束了
  • 怎样编写一段程序,要求调用fork并在子进程中建立一个新的对话期。验证子进程变成了进程组长而且不再有控制终端。
  • 用Delphi或VC怎么向unix发送命令来检测进程甚至能够控制进程?
  • 请教一个父子进程控制的问题
  • 如何准确的控制进程个数
  • 关于控制并发进程数量和进程回收问题,请各位兄弟指点!急!!!!!!!
  • 想问个进程控制的问题,各位看看
  • 提问:如何控制多个进程?
  • 如何控制一个进程的CPU的使用率?
  • 进程控制
  • 请教:linux下如何检测并控制进程的内存大小?
  • 如何不启动控制台上的登录进程?
  • NOSQL iis7站长之家
  • apue学习问题 第八章 进程控制 相关
  • 在父进程终止以后子进程为什么不能接受控制终端的信号
  • 如何在父进程中控制子进程??
  • 为什么会出现僵尸进程?一个最简单的进程控制例子
  • 急!使用WINXP+Cygwin写进程控制程序中一个小问题
  • linux僵尸(zombie)进程介绍及清除
  • 进程Afork进程B,进程Bfor进程C,如果进程C退出发出SIGCHLD,A进程是否可以收到
  • Ubuntu查看内存,进程相关命令介绍
  • 如果一个server进程要fork许多子进程,但不等待子进程终止,也不希望子进程结束后处于僵进程状态直到父进程终止。请问可采用什么方法实现
  • linux下进程占用内存空间详解
  • 在多进程中父进程frok子进程,怎样让子进程自举,脱离父进程,而且父进程不退出
  • Linux进程的内核栈和用户栈概念,相互关系及切换过程
  • fock()开出的子进程的进程ID是否进程ID都大于父进程的?
  • android 4.0 托管进程介绍及优先级和回收机制
  • 父进程等待子进程n秒,如果子进程正常退出,父进程立即继续向下执行,如果子出现进程故障一直不退出,父进程等待n秒后继续向下执行,请问
  • linux下进程间通信:共享内存原理及具体用法举例(基于c/c++语言)


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3