Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. General and Desktop
  4. Weird behavior of QProcess and multiple qoutes
Qt 6.12 LTS is out! See what's new in the release blog

Weird behavior of QProcess and multiple qoutes

Scheduled Pinned Locked Moved Solved General and Desktop
36 Posts 7 Posters 9.9k 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.
  • M Offline
    M Offline
    Manta Ray
    wrote on last edited by Manta Ray
    #6

    @jsulm
    Ok, added

        arguments.clear();
        arguments << "set_network" << "0" << "psk" << "'\"" << pwd << "\"'";
        qDebug() << arguments;
        wpacli->execute(program, arguments);
    

    and got the same result:

    ("set_network", "0", "psk", "'\"", "12345678", "\"'")
    Selected interface 'wlan0'
    FAIL
    
    
    jsulmJ 1 Reply Last reply
    0
    • M Manta Ray

      @jsulm
      Ok, added

          arguments.clear();
          arguments << "set_network" << "0" << "psk" << "'\"" << pwd << "\"'";
          qDebug() << arguments;
          wpacli->execute(program, arguments);
      

      and got the same result:

      ("set_network", "0", "psk", "'\"", "12345678", "\"'")
      Selected interface 'wlan0'
      FAIL
      
      
      jsulmJ Offline
      jsulmJ Offline
      jsulm
      Lifetime Qt Champion
      wrote on last edited by
      #7

      @Manta-Ray Please read again what I wrote and compare it to what you did.

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

      1 Reply Last reply
      5
      • M Offline
        M Offline
        Manta Ray
        wrote on last edited by
        #8

        Wow!
        It works! Thanks a lot!
        Thanks!
        Thanks!
        Thanks!

        Can you, please, explain me, what's the magic is going here?

        K jsulmJ 2 Replies Last reply
        0
        • M Manta Ray

          Wow!
          It works! Thanks a lot!
          Thanks!
          Thanks!
          Thanks!

          Can you, please, explain me, what's the magic is going here?

          K Offline
          K Offline
          Konstantin Tokarev
          wrote on last edited by Konstantin Tokarev
          #9

          @Manta-Ray You need to pass 4 arguments to wpa_cli:

          set_network, 0, psk, "12345678"

          instead you passed 6

          set_network, 0, psk, ", 12345678, "

          1 Reply Last reply
          1
          • M Manta Ray

            Wow!
            It works! Thanks a lot!
            Thanks!
            Thanks!
            Thanks!

            Can you, please, explain me, what's the magic is going here?

            jsulmJ Offline
            jsulmJ Offline
            jsulm
            Lifetime Qt Champion
            wrote on last edited by
            #10

            @Manta-Ray No magic. You simply put both " as own parameters:

            arguments << "set_network" << "0" << "psk" << "'\"" << pwd << "\"'";
            

            see here:

            ("set_network", "0", "psk", "'\"", "12345678", "\"'")
            

            Instead you need to put your password as one string with leading and trailing ", like here:

            arguments << "set_network" << "0" << "psk" << "\"" + pwd + "\"";
            

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

            1 Reply Last reply
            4
            • M Offline
              M Offline
              Manta Ray
              wrote on last edited by
              #11

              Ahaaaa, Thanks you guys a lot!!!!!!
              I really appreciate you!!!!

              1 Reply Last reply
              1
              • G Offline
                G Offline
                Guanhong
                wrote on last edited by
                #12

                @Manta-Ray
                I met the same issue and it failed.
                Could you show me your codes or tell me what's wrong with my codes following, thanks

                            QString strSSID = "12345678"
                            QString program = "wpa_cli";
                            QStringList arguments;      
                            arguments << "-i" << "wlan0" << "set_network" << "0"<< "ssid" << "'\"" << strSSID << "\"'";  
                            QProcess prcsWlan4;
                            prcsWlan4.start(program, arguments);
                            prcsWlan4.waitForFinished(-1);  
                            QString strResult4 = prcsWlan4.readAllStandardOutput();
                

                the result strResult4 is FAIL

                1 Reply Last reply
                0
                • Christian EhrlicherC Offline
                  Christian EhrlicherC Offline
                  Christian Ehrlicher
                  Lifetime Qt Champion
                  wrote on last edited by
                  #13

                  @Guanhong said in Weird behavior of QProcess and multiple qoutes:

                  << "'"" << strSSID << ""'";

                  Why do you quote this? It's not needed at all - every value in the QStringList is passed as one parameter to your app. That's the reason why you should not use the other call - to avoid useless and wrong quotes.

                  Qt Online Installer direct download: https://download.qt.io/official_releases/online_installers/
                  Visit the Qt Academy at https://academy.qt.io/catalog

                  1 Reply Last reply
                  3
                  • G Offline
                    G Offline
                    Guanhong
                    wrote on last edited by
                    #14

                    @Christian-Ehrlicher
                    thank you for your swift reply

                    actually in my project, strSSID is a variable, it is delivered by other parameters, here I just made it a constant for convenience.

                    I changed
                    arguments << "-i" << "wlan0" << "set_network" << "0"<< "ssid" << "'"" << strSSID << ""'";
                    to
                    arguments << "-i" << "wlan0" << "set_network" << "0"<< "ssid" << "'"" + strSSID + ""'";

                    it still FAILed.
                    could you help me?

                    jsulmJ 1 Reply Last reply
                    0
                    • G Guanhong

                      @Christian-Ehrlicher
                      thank you for your swift reply

                      actually in my project, strSSID is a variable, it is delivered by other parameters, here I just made it a constant for convenience.

                      I changed
                      arguments << "-i" << "wlan0" << "set_network" << "0"<< "ssid" << "'"" << strSSID << ""'";
                      to
                      arguments << "-i" << "wlan0" << "set_network" << "0"<< "ssid" << "'"" + strSSID + ""'";

                      it still FAILed.
                      could you help me?

                      jsulmJ Offline
                      jsulmJ Offline
                      jsulm
                      Lifetime Qt Champion
                      wrote on last edited by
                      #15

                      @Guanhong Please read once more what @Christian-Ehrlicher wrote. Your change is NOT what he wrote...

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

                      1 Reply Last reply
                      1
                      • G Offline
                        G Offline
                        Guanhong
                        wrote on last edited by
                        #16

                        @jsulm thank you.
                        I think quotes are necessary, because there is a single quote outside a double quote.
                        I need to process the following command by QProcess, could you show me how?
                        pa_cli -i wlan0 set_network 1 ssid '"hima24g"'

                        1 Reply Last reply
                        0
                        • Christian EhrlicherC Offline
                          Christian EhrlicherC Offline
                          Christian Ehrlicher
                          Lifetime Qt Champion
                          wrote on last edited by Christian Ehrlicher
                          #17

                          Again: there is no need to quote an argument when using QProcess::start() with QStringList - they are only needed on the command line so bash/cmd.exe/whatever knows what a single argument is! Your ssid is hima24g and not "hima24g" or 'hima24g' ... or?

                          Qt Online Installer direct download: https://download.qt.io/official_releases/online_installers/
                          Visit the Qt Academy at https://academy.qt.io/catalog

                          1 Reply Last reply
                          3
                          • G Offline
                            G Offline
                            Guanhong
                            wrote on last edited by
                            #18

                            @Christian-Ehrlicher
                            Even if there are single quotes and double quotes in the command, is there no need to add quotes? I looked at earlier replies, it seems that quotes are need.

                            I just removed quotes and changed my codes to
                            arguments << "-i" << "wlan0" << "set_network" << "0"<< "ssid" << strSSID ;
                            FAILed too.

                            jsulmJ 1 Reply Last reply
                            0
                            • G Guanhong

                              @Christian-Ehrlicher
                              Even if there are single quotes and double quotes in the command, is there no need to add quotes? I looked at earlier replies, it seems that quotes are need.

                              I just removed quotes and changed my codes to
                              arguments << "-i" << "wlan0" << "set_network" << "0"<< "ssid" << strSSID ;
                              FAILed too.

                              jsulmJ Offline
                              jsulmJ Offline
                              jsulm
                              Lifetime Qt Champion
                              wrote on last edited by
                              #19

                              @Guanhong Then add proper error handling and also read from std error of your process to see whether it prints any errors.

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

                              G 1 Reply Last reply
                              2
                              • jsulmJ jsulm

                                @Guanhong Then add proper error handling and also read from std error of your process to see whether it prints any errors.

                                G Offline
                                G Offline
                                Guanhong
                                wrote on last edited by
                                #20

                                @jsulm
                                QString strResult4 = prcsWlan4.readAllStandardOutput();
                                strResult4 is FAIL

                                jsulmJ 1 Reply Last reply
                                0
                                • G Guanhong

                                  @jsulm
                                  QString strResult4 = prcsWlan4.readAllStandardOutput();
                                  strResult4 is FAIL

                                  jsulmJ Offline
                                  jsulmJ Offline
                                  jsulm
                                  Lifetime Qt Champion
                                  wrote on last edited by
                                  #21

                                  @Guanhong said in Weird behavior of QProcess and multiple qoutes:

                                  readAllStandardOutput()

                                  I was talking about std ERROR (https://doc.qt.io/qt-5/qprocess.html#readAllStandardError)...

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

                                  1 Reply Last reply
                                  0
                                  • Christian EhrlicherC Offline
                                    Christian EhrlicherC Offline
                                    Christian Ehrlicher
                                    Lifetime Qt Champion
                                    wrote on last edited by
                                    #22

                                    Please run it on the command line. Maybe you don't have the proper privileges.

                                    Qt Online Installer direct download: https://download.qt.io/official_releases/online_installers/
                                    Visit the Qt Academy at https://academy.qt.io/catalog

                                    G 1 Reply Last reply
                                    0
                                    • Christian EhrlicherC Christian Ehrlicher

                                      Please run it on the command line. Maybe you don't have the proper privileges.

                                      G Offline
                                      G Offline
                                      Guanhong
                                      wrote on last edited by
                                      #23

                                      @Christian-Ehrlicher
                                      I have run it on the command line, it is no problem.

                                      Christian EhrlicherC 1 Reply Last reply
                                      0
                                      • G Guanhong

                                        @Christian-Ehrlicher
                                        I have run it on the command line, it is no problem.

                                        Christian EhrlicherC Offline
                                        Christian EhrlicherC Offline
                                        Christian Ehrlicher
                                        Lifetime Qt Champion
                                        wrote on last edited by
                                        #24

                                        @Guanhong Please show how you run it on the command line

                                        Qt Online Installer direct download: https://download.qt.io/official_releases/online_installers/
                                        Visit the Qt Academy at https://academy.qt.io/catalog

                                        1 Reply Last reply
                                        0
                                        • G Offline
                                          G Offline
                                          Guanhong
                                          wrote on last edited by
                                          #25

                                          @Guanhong said in Weird behavior of QProcess and multiple qoutes:

                                          <

                                          wpa_cli -i wlan0 set_network 1 ssid '"hima24g"'
                                          I run it on an Ubuntu console, and it can run successfully

                                          jsulmJ Christian EhrlicherC 2 Replies Last reply
                                          0

                                          • Login

                                          • Login or register to search.
                                          • First post
                                            Last post
                                          0
                                          • Categories
                                          • Recent
                                          • Tags
                                          • Popular
                                          • Users
                                          • Groups
                                          • Search
                                          • Get Qt
                                          • Unsolved