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. how to find out if application started for first time after boot
Forum Updated to NodeBB v4.3 + New Features

how to find out if application started for first time after boot

Scheduled Pinned Locked Moved Unsolved General and Desktop
12 Posts 7 Posters 1.6k Views 1 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 Offline
    A Offline
    abdullahzubair109
    wrote on last edited by
    #1

    i have a text editor.. every time i start this after boot, i want to run some underlying background process .. for that i must know if the text editor started for first time after boot.. how can i implement such feature???

    aha_1980A GerhardG 2 Replies Last reply
    0
    • A abdullahzubair109

      i have a text editor.. every time i start this after boot, i want to run some underlying background process .. for that i must know if the text editor started for first time after boot.. how can i implement such feature???

      aha_1980A Offline
      aha_1980A Offline
      aha_1980
      Lifetime Qt Champion
      wrote on last edited by
      #2

      @abdullahzubair109

      Not directly your use case, but QtSingleApplication might give you some insight how to do it.

      Regards

      Qt has to stay free or it will die.

      1 Reply Last reply
      1
      • hskoglundH Offline
        hskoglundH Offline
        hskoglund
        wrote on last edited by hskoglund
        #3

        If you're on Windows, you could use the ::GetTickCount64(), it returns # of milliseconds since boot.

        Use this number to calculate the date and time for the most recent boot, like this:

        QDateTime dtBoot = QDateTime::currentDateTime().addMSecs(0 - ::GetTickCount64());
        

        (need to #include "windows.h" )

        Then save this date/time in a disk file, for example an .ini file, when you start the text editor. Then before you save, you check if the previous, saved boot time is the same as the current. If not, the text editor has started for the first time since boot.

        Edit: I tested my idea, spotted one problem: the exact number of milliseconds varies due to rounding in ::GetTickCount64(), if I run my test program with a couple of minutes apart each time, it will say the boot time of my computer is:

        2019-05-11 06:35:54.786
        2019-05-11 06:35:54.776
        2019-05-11 06:35:54.783
        2019-05-11 06:35:54.780
        2019-05-11 06:35:54.784

        So some form of rounding to the nearest second needs to be applied...

        1 Reply Last reply
        3
        • A abdullahzubair109

          i have a text editor.. every time i start this after boot, i want to run some underlying background process .. for that i must know if the text editor started for first time after boot.. how can i implement such feature???

          GerhardG Offline
          GerhardG Offline
          Gerhard
          wrote on last edited by Gerhard
          #4

          @abdullahzubair109
          Try it with a "Volatile Registry Key". These entries are not persistent and would be filled at System start. If your app creates this entry than you can check if this entry is present, if not then the app was not started yet.

          Gerhard

          (sorry for my english)

          Gerhard

          A 1 Reply Last reply
          2
          • GerhardG Gerhard

            @abdullahzubair109
            Try it with a "Volatile Registry Key". These entries are not persistent and would be filled at System start. If your app creates this entry than you can check if this entry is present, if not then the app was not started yet.

            Gerhard

            (sorry for my english)

            A Offline
            A Offline
            abdullahzubair109
            wrote on last edited by
            #5

            @Gerhard that sounds a good approach.. but i am on a linux machine.. will try to figure out something alternative.

            GerhardG JonBJ 3 Replies Last reply
            0
            • A abdullahzubair109

              @Gerhard that sounds a good approach.. but i am on a linux machine.. will try to figure out something alternative.

              GerhardG Offline
              GerhardG Offline
              Gerhard
              wrote on last edited by
              #6

              @abdullahzubair109
              create a Semaphore at first start of the process, in your app check if Semaphore is created or locked. Not so familar with the new POSIX semaphores, look at the man pages or Google Linux IPC (inter process communication).

              Gerhard

              Gerhard

              1 Reply Last reply
              1
              • A abdullahzubair109

                @Gerhard that sounds a good approach.. but i am on a linux machine.. will try to figure out something alternative.

                JonBJ Offline
                JonBJ Offline
                JonB
                wrote on last edited by JonB
                #7

                @abdullahzubair109
                For quick & dirty (doubtless @Gerhard's semaphore is better), can't you just create a file in /tmp and check for its existence? Doesn't your /tmp get cleared out on reboot?

                A 1 Reply Last reply
                0
                • A abdullahzubair109

                  @Gerhard that sounds a good approach.. but i am on a linux machine.. will try to figure out something alternative.

                  GerhardG Offline
                  GerhardG Offline
                  Gerhard
                  wrote on last edited by
                  #8

                  @abdullahzubair109
                  You can also start the Background process once at System start. Therefore you can use a script in the etc/rc Directory.

                  Gerhard

                  Gerhard

                  1 Reply Last reply
                  0
                  • JonBJ JonB

                    @abdullahzubair109
                    For quick & dirty (doubtless @Gerhard's semaphore is better), can't you just create a file in /tmp and check for its existence? Doesn't your /tmp get cleared out on reboot?

                    A Offline
                    A Offline
                    abdullahzubair109
                    wrote on last edited by
                    #9

                    @JonB it depends on distros..not all distros remove temp directory on boot

                    J.HilkJ Kent-DorfmanK 2 Replies Last reply
                    0
                    • A abdullahzubair109

                      @JonB it depends on distros..not all distros remove temp directory on boot

                      J.HilkJ Online
                      J.HilkJ Online
                      J.Hilk
                      Moderators
                      wrote on last edited by
                      #10

                      @abdullahzubair109
                      how much influence do you have about the Linux System.

                      Is it a custom one or could it be anything, depending on the user of your program ?


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


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

                      A 1 Reply Last reply
                      0
                      • A abdullahzubair109

                        @JonB it depends on distros..not all distros remove temp directory on boot

                        Kent-DorfmanK Offline
                        Kent-DorfmanK Offline
                        Kent-Dorfman
                        wrote on last edited by
                        #11

                        @abdullahzubair109

                        If they are configured correctly, all modern linux distros should clear the /tmp directory on reboot. In fact, most of them mount /tmp as a RAM filesystem, so it is volatile anyways. The stub file under /tmp or /var/tmp or /var/run is the historical way in UNIX to check whether something is already running.

                        1 Reply Last reply
                        2
                        • J.HilkJ J.Hilk

                          @abdullahzubair109
                          how much influence do you have about the Linux System.

                          Is it a custom one or could it be anything, depending on the user of your program ?

                          A Offline
                          A Offline
                          abdullahzubair109
                          wrote on last edited by
                          #12

                          @J.Hilk could be anything

                          1 Reply Last reply
                          0

                          • Login

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