[Asterisk-Users] Re: System called seems forked up

2004-02-21 Thread Bill Michaelson




It is now indeed more discerning, but it has reported Fork failed.  But 
the fork most certainly has not failed!  The shell command invoked has 
run, and what's more, completed successfully, producing the expected files.

 Does anyone have any ideas?

[EMAIL PROTECTED] suggested:

Can you check the errno? strerror(errno); should give you a string of why  it
failed. (Just be careful not to use other stuff which touches errno after the
fork()


Of course - very good suggestion (embarrassed I didn't think of it)... anyway...

it returns 10, which perror tells me is "No child processes".

Sooo, I suppose the spawned process is somehow disassociated from the process
group prior to execution of the wait() embedded within the system()? Duuh...
I'm still stumped, but I guess we are on to something?

On the other hand, if a fork does really fail, one might expect errno to
be 10 in that case too.

I've half a mind to break it out into a fork/exec/wait for myself, but, uh,
ugh. I guess I'm lazy. Please, briliant insights, anybody?





Re: [Asterisk-Users] Re: System called seems forked up

2004-02-21 Thread andrewg
On Sat, Feb 21, 2004 at 09:41:52AM -0500, Bill Michaelson wrote:
 It is now indeed more discerning, but it has reported Fork failed.  But 
 the fork most certainly has not failed!  The shell command invoked has 
 run, and what's more, completed successfully, producing the expected files.
 
 Does anyone have any ideas?
 
 [EMAIL PROTECTED] suggested:
 
 Can you check the errno? strerror(errno); should give you a string of why  
 it
 failed. (Just be careful not to use other stuff which touches errno after 
 the
 fork()
 
 
 Of course - very good suggestion (embarrassed I didn't think of it)... 
 anyway...
 
 it returns 10, which perror tells me is No child processes.
 
 Sooo, I suppose the spawned process is somehow disassociated from the 
 process group prior to execution of the wait() embedded within the 
 system()?  Duuh... I'm still stumped, but I guess we are on to something?
 
 On the other hand, if a fork does really fail, one might expect errno to 
 be 10 in that case too.
 
 I've half a mind to break it out into a fork/exec/wait for myself, but, 
 uh, ugh.  I guess I'm lazy.  Please, briliant insights, anybody?
 

Checking the kernel source for sys_wait4, it would appear the child has already
disappeared (*shrug* not much of a kernel coder btw).

What is the status of SIGCHLD? if its being ignored the child will be reaped 
straight away iirc. if its not, I guess it should still be around for wait4'ing.

Probably for reliablity and portability, your own fork/exec/wait would be better
I would imagine.

- andrewg
___
Asterisk-Users mailing list
[EMAIL PROTECTED]
http://lists.digium.com/mailman/listinfo/asterisk-users
To UNSUBSCRIBE or update options visit:
   http://lists.digium.com/mailman/listinfo/asterisk-users