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()
Forum Updated to NodeBB v4.3 + New Features

problem with System()

Scheduled Pinned Locked Moved Unsolved General and Desktop
system commandsystem
37 Posts 5 Posters 12.7k Views 2 Watching
  • 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 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
                      • J Offline
                        J 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
                        • J 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... :(

                              J 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... :(

                                J Offline
                                J 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
                                  • J 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

                                    J A 2 Replies Last reply 24 Jun 2016, 08:33
                                    0
                                    • A AlvaroS
                                      24 Jun 2016, 08:31

                                      @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

                                      J Offline
                                      J Offline
                                      jsulm
                                      Lifetime Qt Champion
                                      wrote on 24 Jun 2016, 08:33 last edited by jsulm
                                      #21

                                      @AlvaroS Then try what @mrjj suggested

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

                                      1 Reply Last reply
                                      0
                                      • M mrjj
                                        24 Jun 2016, 08:30

                                        @AlvaroS

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

                                        A Offline
                                        A Offline
                                        AlvaroS
                                        wrote on 24 Jun 2016, 08:38 last edited by
                                        #22
                                        This post is deleted!
                                        M 1 Reply Last reply 24 Jun 2016, 08:40
                                        0
                                        • A AlvaroS
                                          24 Jun 2016, 08:31

                                          @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

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

                                          @AlvaroS said:

                                          @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

                                          @jsulm said:

                                          @AlvaroS Then try what @mrjj suggested

                                          okey, it gives me UnknowError.... http://doc.qt.io/qt-5/qprocess.html#ProcessError-enum

                                          1 Reply Last reply
                                          0

                                          13/37

                                          24 Jun 2016, 08:01

                                          • Login

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