| 123456789101112131415161718192021222324252627282930313233343536 |
- #include "unpthread.h"## 1 ##src/threads/strclithread.c##
- void *copyto(void *);## 2 ##src/threads/strclithread.c##
- static int sockfd; /* global for both threads to access */## 3 ##src/threads/strclithread.c##
- static FILE *fp;## 4 ##src/threads/strclithread.c##
- void## 5 ##src/threads/strclithread.c##
- str_cli(FILE *fp_arg, int sockfd_arg)## 6 ##src/threads/strclithread.c##
- {## 7 ##src/threads/strclithread.c##
- char recvline[MAXLINE];## 8 ##src/threads/strclithread.c##
- pthread_t tid;## 9 ##src/threads/strclithread.c##
- sockfd = sockfd_arg; /* copy arguments to externals */## 10 ##src/threads/strclithread.c##
- fp = fp_arg;## 11 ##src/threads/strclithread.c##
- Pthread_create(&tid, NULL, copyto, NULL);## 12 ##src/threads/strclithread.c##
- while (Readline(sockfd, recvline, MAXLINE) > 0)## 13 ##src/threads/strclithread.c##
- Fputs(recvline, stdout);## 14 ##src/threads/strclithread.c##
- }## 15 ##src/threads/strclithread.c##
- void *## 16 ##src/threads/strclithread.c##
- copyto(void *arg)## 17 ##src/threads/strclithread.c##
- {## 18 ##src/threads/strclithread.c##
- char sendline[MAXLINE];## 19 ##src/threads/strclithread.c##
- while (Fgets(sendline, MAXLINE, fp) != NULL)## 20 ##src/threads/strclithread.c##
- Writen(sockfd, sendline, strlen(sendline));## 21 ##src/threads/strclithread.c##
- Shutdown(sockfd, SHUT_WR); /* EOF on stdin, send FIN */## 22 ##src/threads/strclithread.c##
- return (NULL);## 23 ##src/threads/strclithread.c##
- /* 4return (i.e., thread terminates) when end-of-file on stdin */## 24 ##src/threads/strclithread.c##
- }## 25 ##src/threads/strclithread.c##
|