Hello, Works fine here. I'm running your testcase on:
$ uname -a CYGWIN_NT-5.0 mordor 1.3.20(0.73/3/2) 2003-02-08 12:10 i686 unknown unknown Cygwin It will help if you provide more infomation about your system environment and the version of Cygwin that you are running. To learn how to do this take a look at http://www.cygwin.com/bugs.html, the section named 'Bug reporting guidelines'. On Thu, 13 Feb 2003, Henry wrote: > This is a demo program to issue my problem i'm facing to. > #include <stdio.h> > #include <sys/socket.h> > #include <netinet/in.h> > > int main(int argc, char *argv[]) { > int sockfd, accefd, rsinlen, on = 1; > pid_t pid; > struct sockaddr_in sin, rsin; > unsigned long waittime; > > if (fork()) exit(0); > > sockfd = socket(PF_INET, SOCK_STREAM, 0); > setsockopt(sockfd, SOL_SOCKET, SO_REUSEADDR, &on, sizeof(on)); > memset(&sin, 0, sizeof(struct sockaddr)); > rsinlen = sizeof(struct sockaddr); > sin.sin_family = AF_INET; > sin.sin_port = htons(80); > sin.sin_addr.s_addr = INADDR_ANY; > bind(sockfd, (struct sockaddr *)&sin, sizeof(struct sockaddr)); > listen(sockfd, 256); > while (1) { > accefd = accept(sockfd, (struct sockaddr *)&rsin, &rsinlen); > if (accefd >= 0) { > pid = fork(); > if (pid < 0) { > printf("Parent: fork error\n"); > close(accefd); > continue; > } > if (pid == 0) { > close(sockfd); > //close(accefd); > /* in my test, althought I add this line the second time, > it ran into the same situation */ > process(accefd); > printf("Child return to parent\n"); > close(accefd); > exit(0); > } else { > waitpid(pid, NULL, 0); > printf("Parent exiting\n"); > close(accefd); > exit(0); > } > } > } > return 0; > } > > int process(int fd) { > int i; > > printf("Child start\n"); > close(fd); > printf("fd %d closed\n", fd); > > if (fork() > 0) > return 0; > printf("in grandchild, infinite loop\n"); > while (1) ; > } > > While I compile and run this program in cygwin with gcc, and then telnet to 80 port, >my telnet client can't disconnect and I have to use ^] to terminate. The same program >tested in FreeBSD 5.0RC2, and got the following result. > > su-2.05b# ./test > su-2.05b# telnet localhost 80 > Trying 127.0.0.1... > Connected to localhost. > Escape character is '^]'. > Child start > accept fd closed > Child return to parent > Parent exiting > in grandchild, infinite loop > Connection closed by foreign host. > > The socket was closed automatively. > > I'm wondering whether I dismissed something or this is a bug in cygwin. I spent >hours in google and find many bugs description, but none of them is familiar with my >problem. > > My cygwin version is 2.194.2.24. -- Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple Bug reporting: http://cygwin.com/bugs.html Documentation: http://cygwin.com/docs.html FAQ: http://cygwin.com/faq/