Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. General and Desktop
  4. problem with System()
QtWS25 Last Chance

problem with System()

Scheduled Pinned Locked Moved Unsolved General and Desktop
system commandsystem
37 Posts 5 Posters 12.3k Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • A Offline
    A Offline
    AlvaroS
    wrote on 23 Jun 2016, 11:27 last edited by AlvaroS
    #1

    Hello everyone:

    First of all thanks a lot for reading this post and being able to help.
    I have a problem whit System command.

    if I write:

    sprintf(command, "%s %0.0f %0.0f 0 %0.0f %0.0f %s 0 0 +", princi,wps.front().x(), wps.front().y(),wps.back().x(),wps.back().y(),name_bmp);
    
    chdir("/home/"); //To change directory
    system(command);
    

    It give me segmentation fault when it runs system(command)

    However if I write:

    system("./princi 0 747.37 427.68 0 844.37 42.54 prueba_princi.bmp 0 0 +")
    
    

    it runs perfectly....

    What am I doing wrong?
    Thanks!

    J 1 Reply Last reply 23 Jun 2016, 11:42
    0
    • S Offline
      S Offline
      SGaist
      Lifetime Qt Champion
      wrote on 23 Jun 2016, 11:39 last edited by
      #2

      Hi,

      What does it have to do with Qt ?

      In any case, check the content of your command string.

      Note that you can use QProcess for that kind of task.

      Interested in AI ? www.idiap.ch
      Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

      A 1 Reply Last reply 23 Jun 2016, 11:41
      2
      • S SGaist
        23 Jun 2016, 11:39

        Hi,

        What does it have to do with Qt ?

        In any case, check the content of your command string.

        Note that you can use QProcess for that kind of task.

        A Offline
        A Offline
        AlvaroS
        wrote on 23 Jun 2016, 11:41 last edited by
        #3

        @SGaist Yes, command string is right... but I do not why segmentation fault...
        I am going to check QProcess

        1 Reply Last reply
        0
        • A AlvaroS
          23 Jun 2016, 11:27

          Hello everyone:

          First of all thanks a lot for reading this post and being able to help.
          I have a problem whit System command.

          if I write:

          sprintf(command, "%s %0.0f %0.0f 0 %0.0f %0.0f %s 0 0 +", princi,wps.front().x(), wps.front().y(),wps.back().x(),wps.back().y(),name_bmp);
          
          chdir("/home/"); //To change directory
          system(command);
          

          It give me segmentation fault when it runs system(command)

          However if I write:

          system("./princi 0 747.37 427.68 0 844.37 42.54 prueba_princi.bmp 0 0 +")
          
          

          it runs perfectly....

          What am I doing wrong?
          Thanks!

          J Offline
          J Offline
          Joel Bodenmann
          wrote on 23 Jun 2016, 11:42 last edited by Joel Bodenmann
          #4

          This is not really an answer to your question but still related: You should consider using the QProcess class. This is not only a lot more flexible & portable than the system() function but also integrates well into the Qt framework (signal&slots, properties, ...).
          Usually you want to use Qt library components wherever possible.

          To still be somewhat useful: Did you check that command is large enough and that the string assembled by sprintf() is correct?

          Edit: @SGaist played ninja again....

          Industrial process automation software: https://simulton.com
          Embedded Graphics & GUI library: https://ugfx.io

          1 Reply Last reply
          2
          • M Offline
            M Offline
            mrjj
            Lifetime Qt Champion
            wrote on 23 Jun 2016, 11:49 last edited by
            #5

            @AlvaroS said:

            sprintf(command, "%s %0.0f %0.0f 0 %0.0f %0.0f %s 0 0 +", princi,wps.front().x(), wps.front().y(),wps.back().x(),wps.back().y(),name_bmp)

            What types are
            princi
            name_bmp

            better not be QStrings :)

            A 1 Reply Last reply 24 Jun 2016, 07:31
            3
            • M mrjj
              23 Jun 2016, 11:49

              @AlvaroS said:

              sprintf(command, "%s %0.0f %0.0f 0 %0.0f %0.0f %s 0 0 +", princi,wps.front().x(), wps.front().y(),wps.back().x(),wps.back().y(),name_bmp)

              What types are
              princi
              name_bmp

              better not be QStrings :)

              A Offline
              A Offline
              AlvaroS
              wrote on 24 Jun 2016, 07:31 last edited by
              #6

              @mrjj Hello.
              They are const char* !

              1 Reply Last reply
              1
              • S Offline
                S Offline
                SGaist
                Lifetime Qt Champion
                wrote on 24 Jun 2016, 07:36 last edited by
                #7

                Then run your application through the debugger.

                Interested in AI ? www.idiap.ch
                Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

                A 1 Reply Last reply 24 Jun 2016, 07:48
                0
                • S SGaist
                  24 Jun 2016, 07:36

                  Then run your application through the debugger.

                  A Offline
                  A Offline
                  AlvaroS
                  wrote on 24 Jun 2016, 07:48 last edited by
                  #8

                  @SGaist Now I do this:

                      QString program = "./home/princi";
                      QStringList arguments;
                  
                      arguments << "0" << QString::number(wps.front().x()) << QString::number(wps.front().y()) << "0" << QString::number(wps.back().x()) << QString::number(wps.back().y()) << "prueba_princi.bmp" << "0 0 +" ;
                  
                      QProcess myProcess;
                  
                      myProcess.start(program,arguments);
                  

                  it compiles good but my application does not run...

                  1 Reply Last reply
                  0
                  • S Offline
                    S Offline
                    SGaist
                    Lifetime Qt Champion
                    wrote on 24 Jun 2016, 07:50 last edited by
                    #9

                    You call it with a path relative to where you main application is started.

                    ./home/princi is equivalent to $PWD/home/princi/ which is likely not what you want, is it ?

                    Interested in AI ? www.idiap.ch
                    Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

                    A 2 Replies Last reply 24 Jun 2016, 07:56
                    2
                    • S SGaist
                      24 Jun 2016, 07:50

                      You call it with a path relative to where you main application is started.

                      ./home/princi is equivalent to $PWD/home/princi/ which is likely not what you want, is it ?

                      A Offline
                      A Offline
                      AlvaroS
                      wrote on 24 Jun 2016, 07:56 last edited by
                      #10

                      @SGaist yes! but it does not run with that code..

                      1 Reply Last reply
                      0
                      • S SGaist
                        24 Jun 2016, 07:50

                        You call it with a path relative to where you main application is started.

                        ./home/princi is equivalent to $PWD/home/princi/ which is likely not what you want, is it ?

                        A Offline
                        A Offline
                        AlvaroS
                        wrote on 24 Jun 2016, 07:58 last edited by
                        #11

                        @SGaist Now I do this and nothing as well..

                            QString program = "princi";
                            QStringList arguments;
                        
                            arguments << "0" << QString::number(wps.front().x()) << QString::number(wps.front().y()) << "0" << QString::number(wps.back().x()) << QString::number(wps.back().y()) << "prueba_princi.bmp" << "0 0 +" ;
                        
                            QString folder = "/home/";
                        
                            QProcess *myProcess = new QProcess(this);
                        
                            myProcess->setWorkingDirectory(folder);
                        
                            myProcess->start(program,arguments);
                        
                        1 Reply Last reply
                        0
                        • S Offline
                          S Offline
                          SGaist
                          Lifetime Qt Champion
                          wrote on 24 Jun 2016, 07:59 last edited by
                          #12

                          What is the full path to princi ? And what is the full path to your application ?

                          Interested in AI ? www.idiap.ch
                          Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

                          A 1 Reply Last reply 24 Jun 2016, 08:01
                          0
                          • S SGaist
                            24 Jun 2016, 07:59

                            What is the full path to princi ? And what is the full path to your application ?

                            A Offline
                            A Offline
                            AlvaroS
                            wrote on 24 Jun 2016, 08:01 last edited by
                            #13

                            @SGaist Full path of princi (which is the executable) is /home/
                            and full path of my QT aplication is /home/workspace

                            1 Reply Last reply
                            0
                            • jsulmJ Offline
                              jsulmJ Offline
                              jsulm
                              Lifetime Qt Champion
                              wrote on 24 Jun 2016, 08:09 last edited by
                              #14

                              /home is not the full path to your application except it is called home and is located in the root directory.
                              So, you can start the program in a shell with /home/princi?
                              Did you try it?
                              This is quite strange path: in /home you usually have a directory for each user and /home is not writable by normal user.

                              https://forum.qt.io/topic/113070/qt-code-of-conduct

                              A 1 Reply Last reply 24 Jun 2016, 08:23
                              2
                              • jsulmJ jsulm
                                24 Jun 2016, 08:09

                                /home is not the full path to your application except it is called home and is located in the root directory.
                                So, you can start the program in a shell with /home/princi?
                                Did you try it?
                                This is quite strange path: in /home you usually have a directory for each user and /home is not writable by normal user.

                                A Offline
                                A Offline
                                AlvaroS
                                wrote on 24 Jun 2016, 08:23 last edited by
                                #15

                                @jsulm sorry yes, it is in /home/user1/ but it does not run as well...

                                1 Reply Last reply
                                0
                                • M Offline
                                  M Offline
                                  mrjj
                                  Lifetime Qt Champion
                                  wrote on 24 Jun 2016, 08:25 last edited by
                                  #16

                                  @AlvaroS said:

                                  QString program = "princi";

                                  should be

                                  QString program = "/home/user1/princi";

                                  ?

                                  A 1 Reply Last reply 24 Jun 2016, 08:28
                                  1
                                  • M mrjj
                                    24 Jun 2016, 08:25

                                    @AlvaroS said:

                                    QString program = "princi";

                                    should be

                                    QString program = "/home/user1/princi";

                                    ?

                                    A Offline
                                    A Offline
                                    AlvaroS
                                    wrote on 24 Jun 2016, 08:28 last edited by
                                    #17

                                    @mrjj It works in the same way... :(

                                    jsulmJ M 2 Replies Last reply 24 Jun 2016, 08:29
                                    0
                                    • A AlvaroS
                                      24 Jun 2016, 08:28

                                      @mrjj It works in the same way... :(

                                      jsulmJ Offline
                                      jsulmJ Offline
                                      jsulm
                                      Lifetime Qt Champion
                                      wrote on 24 Jun 2016, 08:29 last edited by
                                      #18

                                      @AlvaroS So, if you enter /home/user1/princi in a terminal window and press enter it does not start? What happens? Any error message?

                                      https://forum.qt.io/topic/113070/qt-code-of-conduct

                                      A 1 Reply Last reply 24 Jun 2016, 08:31
                                      1
                                      • A AlvaroS
                                        24 Jun 2016, 08:28

                                        @mrjj It works in the same way... :(

                                        M Offline
                                        M Offline
                                        mrjj
                                        Lifetime Qt Champion
                                        wrote on 24 Jun 2016, 08:30 last edited by
                                        #19

                                        @AlvaroS

                                        Ok, you must debug then
                                        try to use
                                        http://doc.qt.io/qt-5/qprocess.html#error
                                        to see what it thinks.

                                        A 1 Reply Last reply 24 Jun 2016, 08:38
                                        2
                                        • jsulmJ jsulm
                                          24 Jun 2016, 08:29

                                          @AlvaroS So, if you enter /home/user1/princi in a terminal window and press enter it does not start? What happens? Any error message?

                                          A Offline
                                          A Offline
                                          AlvaroS
                                          wrote on 24 Jun 2016, 08:31 last edited by
                                          #20

                                          @jsulm In a terminal if I write

                                          ./princi 0 747.37 427.68 0 844.37 42.54 prueba_princi.bmp 0 0 +
                                          

                                          in /home/user1/ directory it runs good

                                          jsulmJ A 2 Replies Last reply 24 Jun 2016, 08:33
                                          0

                                          2/37

                                          23 Jun 2016, 11:39

                                          35 unread
                                          • Login

                                          • Login or register to search.
                                          2 out of 37
                                          • First post
                                            2/37
                                            Last post
                                          0
                                          • Categories
                                          • Recent
                                          • Tags
                                          • Popular
                                          • Users
                                          • Groups
                                          • Search
                                          • Get Qt Extensions
                                          • Unsolved