Hi tech@, Before netcat program exits, it will check whether s is -1, and close socket if s is not -1:
if (s != -1) close(s); The following patch fixes the issue that netcat will close socket twice if it works as a server: Index: netcat.c =================================================================== RCS file: /cvs/src/usr.bin/nc/netcat.c,v retrieving revision 1.192 diff -u -p -r1.192 netcat.c --- netcat.c 10 Aug 2018 17:15:22 -0000 1.192 +++ netcat.c 4 Sep 2018 04:51:55 -0000 @@ -622,9 +622,10 @@ main(int argc, char *argv[]) } close(connfd); } - if (family != AF_UNIX) + if (family != AF_UNIX) { close(s); - else if (uflag) { + s = -1; + } else if (uflag) { if (connect(s, NULL, 0) < 0) err(1, "connect"); } Thanks! -- Best Regards Nan Xiao