- 论坛徽章:
- 0
|
回复 5# zsszss0000
主要代码如下,麻烦指教一下。我现在运行的情况是只能读取到第一台远程机器的文件,后面两台不行- void rdFile(char* tmpname,char *fname,int offset,int length)
- {
- //往远程机器上读取文件
- }
- void handler(int sig)
- {
- if(mid == getpid()) return;
- servaddr.sin_addr.s_addr = inet_addr(ip[no]); //no代表子进程编号, ip[no]是第no个子进程的ip地址
- if (connect(sock_cli, (struct sockaddr *)&servaddr, sizeof(servaddr)) < 0)
- {
- perror("connect");
- exit(1);
- }
- rdFile(tmpFile[no], fileName[no],0, 0); //向ip地址为ip[no]的远程机器读取文件
- exit(0);
- }
- int main()
- {
- int i;
- mid = getpid();
- setpgid(mid, mid);
- signal(SIGUSR1 , handler);
- rdConfFile();
- initTmpfile();
- sock_cli = socket(AF_INET,SOCK_STREAM, 0);
- memset(&servaddr, 0, sizeof(servaddr));
- servaddr.sin_family = AF_INET;
- servaddr.sin_port = htons(PORT);
- for(i=0; i<serverNum; i++)
- {
- pid[i] = fork();
- if(pid[i]<0)
- {
- printf("error\n");
- }
- else if(pid[i] == 0)
- {
- no = i;
- setpgid(getpid(), mid);
- for(;;);
- }
- else
- {
- setpgid(pid[i] , mid);
- }
- }
- kill(0,SIGUSR1);
- return 0;
- }
复制代码 |
|