On Sat, Mar 03, 2007 at 01:56:19PM +0100, Dag Leine wrote: > Hallo, > > I've just played aroudn with the popen(2)-call. After getting a > segmentation fault on a quite old OpenBSD 3.8 machine I've tried to > understand the source. > > /usr/src/lib/libc/gen/popen.c > > what I am missing is the initialization of *pidlist. If I initialize > this static pointer with NULL everything seems to work fine. > > Did I missunderstand the source or the usage of popen?? > > Thanks for Comments > Dag > > > The simple test programm (which dies only on ONE machine): > > > #include <stdio.h> > #include <stdlib.h> > > FILE *p; > > int main(void) > { > if(NULL == (p = popen("/bin/cat", "w"))) > { > printf("popen() failed\n"); > exit(1); > } > fprintf(p, "hallo to pipe\n"); > printf("pclose exiting with %d\n", pclose(p)); > > return(0); > } > >
static struct pid { // ... } *pidlist; is defined at file scope (and static). It should be initialised to the default value 0 by the compiler. Your testprogram also looks ok, are you sure this machine doesn't have a hardware problem? Tobias