[Asterisk-Users] System called seems forked up

Bill Michaelson bill at cosi.com
Sat Feb 21 07:08:02 MST 2004


Attempting to correct the problem about which I earlier posted - wherein 
a system() call which apparently succeeds is perceived to have failed by 
the * process, I changed code in app_system.c so that it would be more 
discerning...

        res = system((char *)data);
        /*
        if (res < 0) {
                ast_log(LOG_WARNING, "Unable to execute '%s'\n", (char 
*)data);
                res = -1;
        } else if (res == 127) {
                ast_log(LOG_WARNING, "Unable to execute '%s'\n", (char 
*)data);
                res = -1;
        */
        if (res == -1) {
                ast_log(LOG_WARNING, "Fork failed for '%s'\n", (char 
*)data);
                res = -1;
        } else if (WEXITSTATUS(res) != 0) {
                ast_log(LOG_WARNING, "Error completion for '%s'\n", 
(char *)data);
                res = -1;
 
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.

Referring to the system(2) man page (Red Hat 9, stock)...

RETURN VALUE
       The value returned is -1 on error (e.g. fork failed),  and  the  
return
       status  of  the command otherwise.  This latter return status is 
in the
       format specified in wait(2).  Thus, the exit code of the  
command  will
       be  WEXITSTATUS(status).   In  case  /bin/sh could not be 
executed, the
       exit status will be that of a command that does exit(127).

...and noting that "fork failed" is only an example of an error, I'm 
wondering what *other* condition might cause the -1 return value.

Does anyone have any ideas?

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.digium.com/pipermail/asterisk-users/attachments/20040221/9113f3b1/attachment.htm


More information about the asterisk-users mailing list