免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1188 | 回复: 5
打印 上一主题 下一主题

一个三机重启的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-07-13 11:16 |只看该作者 |倒序浏览
我打算实现通过select 实现a与c不信号时,三机重启。而现在是三机自动重启,问题在那我不清楚?
以下为:程序b
fd_set  connect_sock_set;

        struct timeval         connect_sock_tv;
       
        FD_ZERO(&connect_sock_set);
        FD_SET(s2,&connect_sock_set);
                                          
           connect_sock_tv.tv_sec = 30;
           connect_sock_tv.tv_usec = 0;
   
          a=select(s2+1,&connect_sock_set, NULL, NULL, &connect_sock_tv);
          
               if(a==0){
               
                printf("return 0 in checkouter() \n");
                return 0;
        }
        if(a<0){
                printf("select error \n");
                exit(-1);
        }
        
        alen=sizeof(struct sockaddr);
           if ( (s3=accept(s2, (struct sockaddr *)&server, &alen)) < 0) {
                   printf( " accept outer and find whether to reboot failed\n, %s\n",strerror(errno));
                   close(s3);
                   close(s2);
                exit(1);
        }
                  
        printf("accept from outer in checkouter() is right \n");
                                                  
        i=recv(s3,buf,sizeof(buf),0);
        if(i<0){
                printf("recv s3 from outer failed\n, %s\n",strerror(errno));
                close(s3);
                close(s2);
                exit(1);
               }
               
               printf("recv data in checkouter() from outer is right!\n");
               
        if(!strncmp(buf,message_str,4)){
                printf("strncmp in checkouter() \n");
                close(s3);
                close(s2);
                      return 1;
               }
              
               printf("halting infomation in checkout() to outer have been accepted \n");
              
        close(s3);
        printf("close s3 \n");
        return 0;

[ 本帖最后由 zlh2407 于 2006-7-13 11:24 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2006-07-13 11:19 |只看该作者

回复 1楼 zlh2407 的帖子

a程序:
if ( (s6=accept(s7, (struct sockaddr *)&cad, &alen)) < 0) {
                printf(" accept failed\n,%s\n",strerror(errno));
                close(s6);
                close(s7);               
                       exit(1);
        }  
       
        printf("accept from outer \n");
       
        FD_ZERO(&connect_sock_set);
        FD_SET(s7,&connect_sock_set);
               
           connect_sock_tv.tv_sec = 30;
           connect_sock_tv.tv_usec = 0;
   
          i=select(s7+1,&connect_sock_set, &wfd_set, &efd_set, &connect_sock_tv);
           
           if(i==0){
                   printf("s6 timeoff! \n");
                   close(s7);
                   return (-1);
           }
           printf("select is made !\n");
          
           if(i<0){
                   printf("select error !\n");
                   exit(-1);
           }
       
           if(FD_ISSET(STDIN,&connect_sock_set)){
                   fgets(send_str,MAXDATASIZE,STDIN);
                   send_str[strlen(send_str)-1]='\0';
                   send(s6,send_str,strlen(send_str),0);
           }          
          
           if(FD_ISSET(s6,&connect_sock_set)){
                   j=recv(s6, buf, BUF_SIZE, 0);
                   if( j==0){
                           printf("recv null from outer  \n,%s\n",strerror(errno));
                           close(s6);
                           close(s7);
                        return -1;
                   }
           }
          
           if(FD_ISSET(s6,&connect_sock_set)){
                   close(s6);
                   exit(0);
           }
                  
           close(s6);
           printf("close s6 \n");  
           return 0;

论坛徽章:
0
3 [报告]
发表于 2006-07-13 11:19 |只看该作者

回复 2楼 zlh2407 的帖子

c程序:
        if (connect(s3, (struct sockaddr *)&myaddr, sizeof(myaddr)) < 0) {
                printf("connect s3 to inner failed \n,%s\n",strerror(errno));
                close(s3);
                return -1;
        }
       
        printf("connect to inner in check() is right!\n");

        n = send(s3, message_str,strlen(message_str), 0);
        if (n <0 ){
                printf("send to inner failed \n,%s\n",strerror(errno));
                   close(s3);
                return -1;
       
        }
        printf("send  in check is over \n");
       
        close(s3);
          printf("close s3 \n");
          return 0;

论坛徽章:
0
4 [报告]
发表于 2006-07-13 11:22 |只看该作者

回复 3楼 zlh2407 的帖子

程序是通过c连接a,a与c不通讯时,汇报给b,b执行三机重启,谢谢大家

论坛徽章:
0
5 [报告]
发表于 2006-07-13 21:20 |只看该作者

回复 1楼 zlh2407 的帖子

又没办法

论坛徽章:
0
6 [报告]
发表于 2006-07-14 09:53 |只看该作者
建议阅读一下Linux下Cluster软件的源代码,有通过共享硬盘分区实现的,也有通过网络实现的
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP