system function not executed correctly

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • Anonymous User

    system function not executed correctly

    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
  • Morris Dovey

    #2
    Re: system function not executed correctly

    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

    Comment

    • santosh

      #3
      Re: system function not executed correctly

      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?

      Comment

      • Anonymous User

        #4
        Re: system function not executed correctly

        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

        Comment

        • Richard Heathfield

          #5
          Re: system function not executed correctly

          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

          Comment

          • Mark Bluemel

            #6
            Re: system function not executed correctly

            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(NUL L)" 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);
            }
            }

            Comment

            • Richard Tobin

              #7
              Re: system function not executed correctly

              In article <fqrlp8$671$1@n ews.yaako.com>,
              Anonymous User <nobody@localho st.comwrote:
              >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

              Comment

              • Joachim Schmitz

                #8
                Re: system function not executed correctly

                Richard Tobin wrote:
                In article <fqrlp8$671$1@n ews.yaako.com>,
                Anonymous User <nobody@localho st.comwrote:
                >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


                Comment

                • Anonymous User

                  #9
                  Re: system function not executed correctly

                  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.

                  Comment

                  • Richard Tobin

                    #10
                    Re: system function not executed correctly

                    In article <fqrpdo$uur$1@o nline.de>,
                    Joachim Schmitz <jojo@schmitz-digital.dewrote :
                    >>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)
                    No. Under Linux, the return code from system() is the signal number
                    if the program dies from a signal. If the command exited with status
                    11, system() would return 11*256.

                    -- Richard
                    --
                    :wq

                    Comment

                    • Joachim Schmitz

                      #11
                      Re: system function not executed correctly

                      Richard Tobin wrote:
                      In article <fqrpdo$uur$1@o nline.de>,
                      Joachim Schmitz <jojo@schmitz-digital.dewrote :
                      >
                      >>>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)
                      >
                      No. Under Linux, the return code from system() is the signal number
                      if the program dies from a signal. If the command exited with status
                      11, system() would return 11*256.
                      Right, sorry, didn't read the man-page properly

                      int status = system("whateve r")
                      if ( status = -1)
                      perror("system( )");
                      else if WISIGNALED(stat us)
                      fprintf(stderr, "killed by signal %d\n", WTERMSIG(status ));
                      else if WIFEXITED(statu s)
                      if (WEXITSTATUS(st atus))
                      fprintf(stderr, "exited with\n", WEXITSTATUS(sta tus));
                      else
                      printf("all is well!\n");
                      ....

                      Bye, Jojo


                      Comment

                      • Richard

                        #12
                        Re: system function not executed correctly

                        "Joachim Schmitz" <nospam.jojo@sc hmitz-digital.dewrite s:
                        Richard Tobin wrote:
                        >In article <fqrpdo$uur$1@o nline.de>,
                        >Joachim Schmitz <jojo@schmitz-digital.dewrote :
                        >>
                        >>>>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)
                        >>
                        >No. Under Linux, the return code from system() is the signal number
                        >if the program dies from a signal. If the command exited with status
                        >11, system() would return 11*256.
                        Right, sorry, didn't read the man-page properly
                        >
                        int status = system("whateve r")
                        if ( status = -1)
                        perror("system( )");
                        You might want to use a debugger on your code and examine the condition
                        above very closely. Hint : keep an eye on "status".
                        else if WISIGNALED(stat us)
                        fprintf(stderr, "killed by signal %d\n", WTERMSIG(status ));
                        else if WIFEXITED(statu s)
                        if (WEXITSTATUS(st atus))
                        fprintf(stderr, "exited with\n", WEXITSTATUS(sta tus));
                        else
                        printf("all is well!\n");
                        ...
                        >
                        Bye, Jojo

                        Comment

                        • Anonymous User

                          #13
                          Re: system function not executed correctly

                          Mark Bluemel wrote:
                          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(NUL L)" 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);
                          }
                          }
                          Yeap, your code works even on Cygwin.

                          Comment

                          • Joachim Schmitz

                            #14
                            Re: system function not executed correctly

                            Richard wrote:
                            "Joachim Schmitz" <nospam.jojo@sc hmitz-digital.dewrite s:
                            >
                            >Richard Tobin wrote:
                            >>In article <fqrpdo$uur$1@o nline.de>,
                            >>Joachim Schmitz <jojo@schmitz-digital.dewrote :
                            >>>
                            >>>>>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)
                            >>>
                            >>No. Under Linux, the return code from system() is the signal number
                            >>if the program dies from a signal. If the command exited with
                            >>status 11, system() would return 11*256.
                            >Right, sorry, didn't read the man-page properly
                            >>
                            >int status = system("whateve r")
                            >if ( status = -1)
                            > perror("system( )");
                            >
                            You might want to use a debugger on your code and examine the
                            condition above very closely. Hint : keep an eye on "status".
                            No debugger needed, it should be status == -1.
                            >else if WISIGNALED(stat us)
                            > fprintf(stderr, "killed by signal %d\n", WTERMSIG(status ));
                            >else if WIFEXITED(statu s)
                            > if (WEXITSTATUS(st atus))
                            > fprintf(stderr, "exited with\n", WEXITSTATUS(sta tus));
                            and here's a %s missing...
                            > else
                            > printf("all is well!\n");
                            >...
                            >>
                            >Bye, Jojo

                            Comment

                            • Joachim Schmitz

                              #15
                              Re: system function not executed correctly

                              Joachim Schmitz wrote:
                              Richard wrote:
                              >"Joachim Schmitz" <nospam.jojo@sc hmitz-digital.dewrite s:
                              >>
                              >>Richard Tobin wrote:
                              >>>In article <fqrpdo$uur$1@o nline.de>,
                              >>>Joachim Schmitz <jojo@schmitz-digital.dewrote :
                              >>>>
                              >>>>>>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)
                              >>>>
                              >>>No. Under Linux, the return code from system() is the signal
                              >>>number if the program dies from a signal. If the command exited
                              >>>with status 11, system() would return 11*256.
                              >>Right, sorry, didn't read the man-page properly
                              >>>
                              >>int status = system("whateve r")
                              >>if ( status = -1)
                              >> perror("system( )");
                              >>
                              >You might want to use a debugger on your code and examine the
                              >condition above very closely. Hint : keep an eye on "status".
                              No debugger needed, it should be status == -1.
                              >
                              >>else if WISIGNALED(stat us)
                              >> fprintf(stderr, "killed by signal %d\n", WTERMSIG(status ));
                              >>else if WIFEXITED(statu s)
                              >> if (WEXITSTATUS(st atus))
                              >> fprintf(stderr, "exited with\n", WEXITSTATUS(sta tus));
                              and here's a %s missing...
                              Rubbish, %d. It's been a long day...
                              >
                              >> else
                              >> printf("all is well!\n");
                              >>...
                              >>>
                              >>Bye, Jojo

                              Comment

                              Working...