Re: how does fork() work?

Snow Cat (snowcat@netgate.net)
Wed, 26 Feb 1997 09:44:34 -0800 (PST)


Marty Leisner once wrote:
>
>
> I want to write a debugging fork (i.e. one that prints and stops after forking).
>
> I want to use LD_PRELOAD to wrap around fork...so I need a more complicated C
> function called fork, eventually invoking the syscall.
>
> I'm a bit confused with the libc architecture for syscalls, what headers
> (sysdep?) do I need to pull out of the tree and place around an application
> for this?
>
> What I eventually want is:
>
>
> fork()
> {
> fancy stuff;
>
> result = system entry point fork()
>
> if(child) {
> printf();
> pause();
> }
> return result;
>
> }
>
>

The simpliest solution would be to call dlsym(RTLD_NEXT, "fork") (in <dlfcn.h>)
and link your preload library with -ldl. Free compatibility with Solaris :)

-- 
 _.    	        _       .  
(_ ,_  _ ,  .  / ` _ _L	 | Email: Oleg Kibirev <snowcat@netgate.net>
..._)| U(_)\/\/  \_,(_L/L  | Visit http://math.math.CSUFresno.EDU/~oleg/math.html
------------------------'  to get my programs + PGP public key