Date: Thu, 04 Dec 1997 09:27:00 +0530 From: A Joseph Koshy <koshy@india.hp.com> To: freebsd-current@freebsd.org Subject: -pthread / popen() problem? Message-ID: <199712040404.UAA07892@palrel1.hp.com>
next in thread | raw e-mail | index | archive | help
`popen(3)' and -pthread seem to have a problem working together. Symptoms: (foo) $ cat a.c #include <stdio.h> char buf[1024]; int main(int ac, char **av) { FILE *x; int c = 0; sprintf(buf, "/bin/cat %s", av[1]); if (x = popen(buf, "r")) { while(fgets(buf, 1024, x) != NULL) c++; printf("%d\n", c); } else { printf("open failed\n"); } } (foo) $ cc -pthread a.c && ./a.out /etc/termcap 0 cat: stdout: Resource temporarily unavailable <-- ``0''??? [the error message is seen intermittently on stderr] (foo) $ ./a.out /dev/zero 0 <-- ??? (foo) $ However, (foo) $ cc a.c && ./a.out /etc/termcap 4126 (foo) $ ./a.out /dev/zero ^C # <-- interrupted from the keyboard (foo) $ ./a.out /dev/null 0 (foo) $ I.e. it works perfectly for non threaded compiles. I saw this problem when looking into why Python (1.4) was failing on -current. (foo) $ python1.4 # <-- from the precompiled package Python 1.4 (Jul 18 1997) [GCC 2.7.2.1] Copyright 1991-1995 Stichting Mathematisch Centrum, Amsterdam >>> import os >>> x=os.popen('/bin/cat /etc/termcap') >>> cat: stdout: Resource temporarily unavailable [program misbehaves from this point] (foo) $ ldd /usr/local/bin/python1.4 /usr/local/bin/python1.4: -lm.2 => /usr/lib/libm.so.2.0 (0x20054000) -lcrypt.2 => /usr/lib/libcrypt.so.2.0 (0x2006f000) -lc_r.3 => /usr/lib/libc_r.so.3.0 (0x20072000) -lc.3 => /usr/lib/libc.so.3.0 (0x200fd000) Koshy <koshy@india.hp.com> #include STD_DISCLAIMER
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199712040404.UAA07892>