Qt Forum

    • Login
    • Search
    • Categories
    • Recent
    • Tags
    • Popular
    • Users
    • Groups
    • Search
    • Unsolved

    Update: Forum Guidelines & Code of Conduct

    Solved QProcess unexpectedly finished

    General and Desktop
    4
    30
    751
    Loading More Posts
    • 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.
    • K
      krist last edited by aha_1980

      Hello
      I'm quite new in this qt.
      I'm trying to use QProcess foor running some application (especially roslaunch) and kill it.
      I know that i must use QProcess but I cannot run even example QProcess.

      The UI is appeared with only one pushbutton but when I push it, it not appear the analogclock but it's just quit the UI and showing error like this :

      12:00:05: Starting /home/krist/qt_proj/build-try_QProcess-Desktop-Debug/try_QProcess ...
      12:00:07: The program has unexpectedly finished.
      12:00:07: The process was ended forcefully.
      12:00:07: /home/krist/qt_proj/build-try_QProcess-Desktop-Debug/try_QProcess crashed.

      here is my code :

      #include "mainwindow.h"
      #include "ui_mainwindow.h"
      #include <QProcess>
      
      MainWindow::MainWindow(QWidget *parent)
          : QMainWindow(parent)
          , ui(new Ui::MainWindow)
      {
          ui->setupUi(this);
      
      }
      
      MainWindow::~MainWindow()
      {
          delete ui;
      }
      
      
      void MainWindow::on_pushButton_clicked()
      {
          QObject *parent;
           QString program = "./krist/QT5.13.2/examples/QT-5.13.2/gui/analogclock";
           QStringList arguments;
           arguments << "-style" << "motif";
      
           QProcess *myProcess = new QProcess(parent);
           myProcess->start(program, arguments);
      
      }
      
      

      anyone can help me?
      thank you very much
      best regards

      1 Reply Last reply Reply Quote 0
      • sierdzio
        sierdzio Moderators last edited by

        No worries, happy coding :-)

        (Z(:^

        1 Reply Last reply Reply Quote 1
        • sierdzio
          sierdzio Moderators last edited by

          @krist said in QProcess unexpedtedly finished:

          QProcess *myProcess = new QProcess(parent);

          Your parent is an invalid object (not initialized with new). Do this instead:

          QProcess *myProcess = new QProcess(this);
          

          Here this is your MainWindow - it will act as parent for your process object.

          (Z(:^

          1 Reply Last reply Reply Quote 3
          • K
            krist last edited by

            Thank you for the answer sierdzio.

            I have updated my code becoming this

            #include "mainwindow.h"
            #include "ui_mainwindow.h"
            #include <QProcess>
            
            MainWindow::MainWindow(QWidget *parent)
                : QMainWindow(parent)
                , ui(new Ui::MainWindow)
            {
                ui->setupUi(this);
            
            }
            
            MainWindow::~MainWindow()
            {
                delete ui;
            }
            
            
            void MainWindow::on_pushButton_clicked()
            {
              
            
                QProcess *myProcess = new QProcess(this);
                 QString program = "./home/krist/Qt5.13.2/examples/Qt-5.13.2/gui/analogclock";
                 QStringList arguments;
                 arguments << "-style" << "motif";
                 myProcess->start(program, arguments);
            
            
            }
            
            

            but when i klik the UI button, nothing is runnable.
            when I look at the analogclock example file, that path is true.
            Inside that path there are only 3 files:

            1. analogclock.pro
            2. analogclock.pro.user
              3.main.cpp

            sory, I'm new about this qt

            1 Reply Last reply Reply Quote 0
            • sierdzio
              sierdzio Moderators last edited by

              QProcess can only run a binary file. You need to compile AnalogClock first, then change your path to point exactly to the resulting binary file.

              (Z(:^

              1 Reply Last reply Reply Quote 3
              • K
                krist last edited by

                I have run the analogClock, but i don't know where the binary file go

                can you please guide me?
                or maybe do you have a refrence video to do it?
                I am very appreciated it

                after i run, there is appear build-analogclock ... debug
                is it the binary file go?
                and inside it, there are 7 file in it

                thank you

                JonB 1 Reply Last reply Reply Quote 0
                • sierdzio
                  sierdzio Moderators last edited by

                  Go into that build directory, there will be analogclock file in there (it will have executable permissions, easy to spot if you run ls -aGl in the directory, or by looking at icon in some file manager) - that's your binary.

                  (Z(:^

                  1 Reply Last reply Reply Quote 0
                  • JonB
                    JonB @krist last edited by

                    @krist said in QProcess unexpectedly finished:

                    I have run the analogClock, but i don't know where the binary file go

                    What does "run" mean? You have to build --- compile & link --- the analogclock project, either for debug or for release. That puts the executable in a directory as specified in the .pro file/look at your Qt Creator settings for building. That is what you need to execute. No, there is no "reference video" for this. It's what building from source code is all about.

                    after i run, there is appear build-analogclock ... debug
                    is it the binary file go?

                    Did you try looking in that directory, for an executable named analogclock?

                    From the output you showed earlier:
                    Starting /home/krist/qt_proj/build-try_QProcess-Desktop-Debug/try_QProcess ...
                    While for your QProcess command you show
                    ./krist/QT5.13.2/examples/QT-5.13.2/gui/analogclock
                    How are these two paths related? Why have you placed a ./ at the start of that? What is your current directory? I would recommend only using absolute paths, not relative, so you know what is going on.

                    1 Reply Last reply Reply Quote 1
                    • K
                      krist last edited by

                      thank you for the answers

                      Starting /home/krist/qt_proj/build-try_QProcess-Desktop-Debug/try_QProcess ...
                      

                      is mine project where i make.

                      and the QT5.13.2 is where the analogclock file is

                      what i mean run is build and run (click on the little hammer in the left below qt and the play icon).

                          QProcess *myProcess = new QProcess(this);
                           QString program = "/home/krist/Qt5.13.2/examples/Qt-5.13.2/gui/build-analogclock-Desktop_Qt_5_13_2_GCC_64bit-Debug/analogclock";
                           QStringList arguments;
                           arguments << "-style" << "motif";
                           myProcess->start(program, arguments);
                      

                      I have found the analogclock at file build-analogclock-Desktop ...
                      but when i source it like below, nothing happened
                      Is there anything wrong?

                      1 Reply Last reply Reply Quote 0
                      • sierdzio
                        sierdzio Moderators last edited by

                        Probably the example fails to run because Qt libraries are not found by ldd. You need to set LD_LIBRARY_PATH for it to work.

                        To get the actual error messages or warnings coming from QProcess, make sure you connect to errorOccured signal and get all output from stderr.

                        (Z(:^

                        1 Reply Last reply Reply Quote 2
                        • K
                          krist last edited by krist

                          I just realied that every time I build and run there is always a notification like this :

                          15:25:54: Starting /home/krist/qt_proj/build-try_qprocess1-Desktop-Debug/try_qprocess1 ...
                          15:25:58: The program has unexpectedly finished.
                          15:25:58: The process was ended forcefully.
                          15:25:58: /home/krist/qt_proj/build-try_qprocess1-Desktop-Debug/try_qprocess1 crashed.
                          

                          Is it the error that you looking for?

                          sierdzio 1 Reply Last reply Reply Quote 0
                          • sierdzio
                            sierdzio Moderators @krist last edited by

                            @krist said in QProcess unexpectedly finished:

                            Is it the error that you looking for?

                            It's not me looking for errors here, it's you :-)

                            15:25:58: The program has unexpectedly finished.

                            No, this tells us nothing. We need more information. Run your app with a debugger (F5), it will show you where the crash occurs.

                            (Z(:^

                            1 Reply Last reply Reply Quote 2
                            • K
                              krist last edited by

                              yeah i know that the big error lies on me
                              :(

                              here is the picture of debugging
                              I have several times click the button but still nothing happens and there is no notification?
                              asdsadsd.png image url)

                              FYI I'm using linux with QT 5.13.2

                              1 Reply Last reply Reply Quote 0
                              • sierdzio
                                sierdzio Moderators last edited by

                                You've commented out the on_pushButton_clicked() slot, so it's not crashing.

                                (Z(:^

                                1 Reply Last reply Reply Quote 1
                                • K
                                  krist last edited by

                                  oh sory
                                  I just try some others code earlier

                                  here is the right screenshoot

                                  mlopr.png

                                  JonB 1 Reply Last reply Reply Quote 0
                                  • sierdzio
                                    sierdzio Moderators last edited by

                                    Does it crash when you click the button? The screenshot does not show any crash.

                                    (Z(:^

                                    1 Reply Last reply Reply Quote 1
                                    • JonB
                                      JonB @krist last edited by JonB

                                      @krist
                                      I can see by enlarging your image that you are still not supplying the correct path for the subprocess. Nor does it even have the executable you wish to run. There is no point telling us here your code contains a certain string if it does not actually use that string. You need to understand the absolute basics about paths if you expect to develop code....

                                      Further, you should read the QProcess documentation and e.g. both check return results and errorOccurred slot if you are having trouble running a process and expect to get error status back.

                                      1 Reply Last reply Reply Quote 1
                                      • K
                                        krist last edited by

                                        Thank you both for your patience on me
                                        :(

                                        @JonB
                                        I use the path based on projects analogClock
                                        here is the screenshot
                                        based on what sierdiio said , i need to source my path to the binary file

                                        buildanalogclock.png

                                        @sierdzio
                                        Nothing crash just nothing happens

                                        JonB J.Hilk 2 Replies Last reply Reply Quote 0
                                        • JonB
                                          JonB @krist last edited by JonB

                                          @krist said in QProcess unexpectedly finished:

                                          I use the path based on projects analogClock

                                          No, you don't. The screenshot (of your code running the QProcess) shows a path which is simply incorrect. Whether you've changed that since screenshot I cannot say.

                                          1 Reply Last reply Reply Quote 1
                                          • J.Hilk
                                            J.Hilk Moderators @krist last edited by

                                            @krist ok, as a step 1, why don't you open a console/terminal outside of QtCreator and try to launch the analogClock manually.

                                            Make sure that works, before you try it from inside your own program!

                                            Be aware of the Qt Code of Conduct, when posting : https://forum.qt.io/topic/113070/qt-code-of-conduct

                                            Qt Needs YOUR vote: https://bugreports.qt.io/browse/QTQAINFRA-4121


                                            Q: What's that?
                                            A: It's blue light.
                                            Q: What does it do?
                                            A: It turns blue.

                                            K 1 Reply Last reply Reply Quote 3
                                            • K
                                              krist @J.Hilk last edited by

                                              @J-Hilk
                                              hello

                                              yapps it's runnable
                                              the step i use is

                                              $cd Qt5.13.2/Examples/Qt-5.13.2/gui/build-analogclock-Desktop_Qt_5_13_2_GCC_64bit-Debug/
                                              enter
                                              $./analogclock
                                              
                                              JonB 1 Reply Last reply Reply Quote 0
                                              • First post
                                                Last post