Re: popen(2)

2007-03-04 Thread Dag Leine
 static struct pid {
  // ...
  } *pidlist;
 
  is defined at file scope (and static). It should be initialised to the
  default value 0 by the compiler.

this I've not known until now

 
  Your testprogram also looks ok, are you sure this machine doesn't have
  a hardware problem?
 
  Tobias

maybe the libc was corrupted, a reinstallation solved the problem

Many Thanks
  Dag



Re: popen(2)

2007-03-03 Thread Tobias Ulmer
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