Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > C Programming > system function not executed correctly

Reply
Thread Tools

system function not executed correctly

 
 
Morris Dovey
Guest
Posts: n/a
 
      03-07-2008
Li Zhou wrote:
>
> When i use system() it always get return code 11 and the command is not
> executed regardless of the command used. Does anyone know what is with
> it? Environment is Linux, glibc and gcc.


Can you post a minimal program that exhibits the problem
behavior, please?

--
Morris Dovey
DeSoto Solar
DeSoto, Iowa USA
http://www.iedu.com/DeSoto
 
Reply With Quote
 
 
 
 
Anonymous User
Guest
Posts: n/a
 
      03-07-2008
When i use system() it always get return code 11 and the command is not
executed regardless of the command used. Does anyone know what is with
it? Environment is Linux, glibc and gcc.

Regards,
Li Zhou
 
Reply With Quote
 
 
 
 
santosh
Guest
Posts: n/a
 
      03-07-2008
Anonymous User wrote:

> When i use system() it always get return code 11 and the command is
> not executed regardless of the command used. Does anyone know what is
> with it? Environment is Linux, glibc and gcc.


Can you show us the code?

 
Reply With Quote
 
Anonymous User
Guest
Posts: n/a
 
      03-07-2008
santosh wrote:
> Anonymous User wrote:
>
>> When i use system() it always get return code 11 and the command is
>> not executed regardless of the command used. Does anyone know what is
>> with it? Environment is Linux, glibc and gcc.

>
> Can you show us the code?
>


if ( system() ) /* see if a shell exists */
{
int return_code = system("echo hello");
std::cout << "return code " << return_code << std::endl;
}

result is:

return code 11

and repeated lines of:

semop lock failure invalid argument
semop unlock failure invalid argument
 
Reply With Quote
 
Mark Bluemel
Guest
Posts: n/a
 
      03-07-2008
Anonymous User wrote:
> santosh wrote:
>> Anonymous User wrote:
>>
>>> When i use system() it always get return code 11 and the command is
>>> not executed regardless of the command used. Does anyone know what is
>>> with it? Environment is Linux, glibc and gcc.


But not C - the code you've shown us is C++

>>
>> Can you show us the code?
>>

>
> if ( system() ) /* see if a shell exists */


That should be "system(NULL)" according to my man pages and compiler

> {
> int return_code = system("echo hello");
> std::cout << "return code " << return_code << std::endl;
> }
>
> result is:
>
> return code 11
>
> and repeated lines of:
>
> semop lock failure invalid argument
> semop unlock failure invalid argument


I think you'd do better a) in a C++ group or b) in a forum relating to
the GNU tools you're using. The semop warning messages suggest there's
something awry in your installation, I'd guess.

The code below (which is in C, as far as I can tell works for me
and returns 0 from the second call to system().

#include <stdlib.h>
#include <stdio.h>
int main(void) {
if (system(NULL)) {
int result = system("echo hello world");
printf("Got %d\n",result);
}
}
 
Reply With Quote
 
Richard Heathfield
Guest
Posts: n/a
 
      03-07-2008
Anonymous User said:

> santosh wrote:
>> Anonymous User wrote:
>>
>>> When i use system() it always get return code 11 and the command is
>>> not executed regardless of the command used. Does anyone know what is
>>> with it? Environment is Linux, glibc and gcc.

>>
>> Can you show us the code?
>>

>
> if ( system() ) /* see if a shell exists */


That should be:

if ( system(NULL) ) /* see if a shell exists */

> {
> int return_code = system("echo hello");


That's fine, but there are one and a half reasons why it isn't doing what
you expect. Firstly, the command (*almost* certainly) is being executed,
but a shell is being created for the purpose, the echo is happening within
that shell, and the shell is then terminating - all too fast for you to
even notice (and there's no requirement on the shell, as far as I know, to
provide a visible terminal session, although on some systems it actually
will do that).

One-and-a-halfthly, and this is more of a heads-up in your case than an
actual problem, the return value is not necessarily the one that the
command returns (alas!), but an implementation-defined value. On my
system, however, the docs say that "The value returned is -1 on error
(e.g. fork failed), and the return status of the command otherwise." ISO C
doesn't guarantee this, but perhaps your implementation does.

> std::cout << "return code " << return_code << std::endl;


This, however, will not compile. It's stuffed full with errors.

--
Richard Heathfield <http://www.cpax.org.uk>
Email: -http://www. +rjh@
Google users: <http://www.cpax.org.uk/prg/writings/googly.php>
"Usenet is a strange place" - dmr 29 July 1999
 
Reply With Quote
 
Richard Tobin
Guest
Posts: n/a
 
      03-07-2008
In article <fqrlp8$671$(E-Mail Removed)>,
Anonymous User <(E-Mail Removed)> wrote:
>When i use system() it always get return code 11 and the command is not
>executed regardless of the command used. Does anyone know what is with
>it? Environment is Linux, glibc and gcc.


That usually indicates a segmentation fault in the called command.
It seems unlikely that you would get this for every command, so
you'll have to show us your exact program.

-- Richard
--
:wq
 
Reply With Quote
 
Joachim Schmitz
Guest
Posts: n/a
 
      03-07-2008
Richard Tobin wrote:
> In article <fqrlp8$671$(E-Mail Removed)>,
> Anonymous User <(E-Mail Removed)> wrote:
>> When i use system() it always get return code 11 and the command is
>> not executed regardless of the command used. Does anyone know what
>> is with it? Environment is Linux, glibc and gcc.

>
> That usually indicates a segmentation fault in the called command.

You may be confusing signal 11, SISSEGV, with exit(11)

> It seems unlikely that you would get this for every command, so
> you'll have to show us your exact program.
>
> -- Richard
>> wq


Bye, Jojo


 
Reply With Quote
 
Anonymous User
Guest
Posts: n/a
 
      03-07-2008
Richard Heathfield wrote:
> Anonymous User said:
>
>> santosh wrote:
>>> Anonymous User wrote:
>>>
>>>> When i use system() it always get return code 11 and the command is
>>>> not executed regardless of the command used. Does anyone know what is
>>>> with it? Environment is Linux, glibc and gcc.
>>> Can you show us the code?
>>>

>> if ( system() ) /* see if a shell exists */

>
> That should be:
>
> if ( system(NULL) ) /* see if a shell exists */
>


yeah, otherwise it won't compile.

>> {
>> int return_code = system("echo hello");

>
> That's fine, but there are one and a half reasons why it isn't doing what
> you expect. Firstly, the command (*almost* certainly) is being executed,
> but a shell is being created for the purpose, the echo is happening within
> that shell, and the shell is then terminating - all too fast for you to
> even notice (and there's no requirement on the shell, as far as I know, to
> provide a visible terminal session, although on some systems it actually
> will do that).


Hmmm, that echo command was just an example. The real command is to
print something on the printer. When i issue the printing command from
the shell everything works as expected but when used inside system()
nothing happened.

>
> One-and-a-halfthly, and this is more of a heads-up in your case than an
> actual problem, the return value is not necessarily the one that the
> command returns (alas!), but an implementation-defined value. On my
> system, however, the docs say that "The value returned is -1 on error
> (e.g. fork failed), and the return status of the command otherwise." ISO C
> doesn't guarantee this, but perhaps your implementation does.
>
>> std::cout << "return code " << return_code << std::endl;

>
> This, however, will not compile. It's stuffed full with errors.
>


This is some c++ code for debugging.
 
Reply With Quote
 
Richard Tobin
Guest
Posts: n/a
 
      03-07-2008
In article <fqro61$996$(E-Mail Removed)>,
Anonymous User <(E-Mail Removed)> wrote:

>> Can you show us the code?


We really need the whole code, not just the bit where you think
the error is.

>if ( system() ) /* see if a shell exists */


This is wrong, and shouldn't compile. Have you forgotten to
include stdlib.h?

You should be passing a null argument to it.

>{
> int return_code = system("echo hello");
> std::cout << "return code " << return_code << std::endl;


Um, that looks like C++, not C.

-- Richard
--
:wq
 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
Why would a function be executed twice if only called onload()? DrKen Javascript 8 06-24-2011 10:27 PM
Function executed twice Bruno Alexandre ASP .Net 0 02-14-2007 09:12 PM
My web login screen does not function correctly Naccessible Java 2 12-07-2006 07:02 PM
Wait for a system command executed in the background Brice Python 2 11-05-2006 10:21 PM
ASPX not executed taja ASP .Net 6 10-22-2003 08:57 PM



Advertisments