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

Reply via email to