Mirror of the lttng-dev mailing list
 help / color / mirror / Atom feed
* [lttng-dev] how to get relayd pid
@ 2015-04-07 20:07 Anand Neeli
  2015-04-07 20:15 ` Philippe Proulx
  0 siblings, 1 reply; 5+ messages in thread
From: Anand Neeli @ 2015-04-07 20:07 UTC (permalink / raw)


Hi All,
Is there any better way of getting lttng-relayd PID programmatically?

like sessiond pid is in /var/run/lttng/lttng-sessiond.pid,  is there any
similar way to get relayd PID?


Thanks,
Anand Neeli
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.lttng.org/pipermail/lttng-dev/attachments/20150408/28ce8e0a/attachment.html>


^ permalink raw reply	[flat|nested] 5+ messages in thread

* [lttng-dev] how to get relayd pid
  2015-04-07 20:07 [lttng-dev] how to get relayd pid Anand Neeli
@ 2015-04-07 20:15 ` Philippe Proulx
  2015-04-07 20:19   ` Anand Neeli
  0 siblings, 1 reply; 5+ messages in thread
From: Philippe Proulx @ 2015-04-07 20:15 UTC (permalink / raw)


Anand,

On Tue, Apr 7, 2015 at 4:07 PM, Anand Neeli <anand.neeli at gmail.com> wrote:
>
> Hi All,
> Is there any better way of getting lttng-relayd PID programmatically?
>
> like sessiond pid is in /var/run/lttng/lttng-sessiond.pid,  is there any similar way to get relayd PID?

For which language?

Phil
>
>
> Thanks,
> Anand Neeli
>
> _______________________________________________
> lttng-dev mailing list
> lttng-dev at lists.lttng.org
> http://lists.lttng.org/cgi-bin/mailman/listinfo/lttng-dev
>



^ permalink raw reply	[flat|nested] 5+ messages in thread

* [lttng-dev] how to get relayd pid
  2015-04-07 20:15 ` Philippe Proulx
@ 2015-04-07 20:19   ` Anand Neeli
  2015-04-07 20:35     ` Philippe Proulx
  0 siblings, 1 reply; 5+ messages in thread
From: Anand Neeli @ 2015-04-07 20:19 UTC (permalink / raw)


For C




On Wed, Apr 8, 2015 at 1:45 AM, Philippe Proulx <eeppeliteloop at gmail.com>
wrote:

> Anand,
>
> On Tue, Apr 7, 2015 at 4:07 PM, Anand Neeli <anand.neeli at gmail.com> wrote:
> >
> > Hi All,
> > Is there any better way of getting lttng-relayd PID programmatically?
> >
> > like sessiond pid is in /var/run/lttng/lttng-sessiond.pid,  is there any
> similar way to get relayd PID?
>
> For which language?
>
> Phil
> >
> >
> > Thanks,
> > Anand Neeli
> >
> > _______________________________________________
> > lttng-dev mailing list
> > lttng-dev at lists.lttng.org
> > http://lists.lttng.org/cgi-bin/mailman/listinfo/lttng-dev
> >
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.lttng.org/pipermail/lttng-dev/attachments/20150408/e03002f8/attachment.html>


^ permalink raw reply	[flat|nested] 5+ messages in thread

* [lttng-dev] how to get relayd pid
  2015-04-07 20:19   ` Anand Neeli
@ 2015-04-07 20:35     ` Philippe Proulx
  2015-04-08 13:42       ` Anand Neeli
  0 siblings, 1 reply; 5+ messages in thread
From: Philippe Proulx @ 2015-04-07 20:35 UTC (permalink / raw)


Anand,

On Tue, Apr 7, 2015 at 4:19 PM, Anand Neeli <anand.neeli at gmail.com> wrote:
> For C

lttng-relayd does not write its PID to a file.

For C, here's the programmatic way of getting the PID of the first
lttng-relayd process found (inspired by [1]):

    #include <stdlib.h>
    #include <stdio.h>
    #include <string.h>
    #include <dirent.h>

    /* checks if the string is purely an integer
     * we can do it with `strtol' also
     */
    int check_if_number (char *str)
    {
      int i;
      for (i=0; str[i] != '\0'; i++)
      {
        if (!isdigit (str[i]))
        {
          return 0;
        }
      }
      return 1;
    }

    #define MAX_BUF 1024
    #define PID_LIST_BLOCK 32

    int *pidof (char *pname)
    {
      DIR *dirp;
      FILE *fp;
      struct dirent *entry;
      int *pidlist, pidlist_index = 0, pidlist_realloc_count = 1;
      char path[MAX_BUF], read_buf[MAX_BUF];

      dirp = opendir ("/proc/");
      if (dirp == NULL)
      {
        perror ("Fail");
        return NULL;
      }

      pidlist = malloc (sizeof (int) * PID_LIST_BLOCK);
      if (pidlist == NULL)
      {
        return NULL;
      }

      while ((entry = readdir (dirp)) != NULL)
      {
        if (check_if_number (entry->d_name))
        {
          strcpy (path, "/proc/");
          strcat (path, entry->d_name);
          strcat (path, "/comm");

          /* A file may not exist, it may have been removed.
           * dut to termination of the process. Actually we need to
           * make sure the error is actually file does not exist to
           * be accurate.
           */
          fp = fopen (path, "r");
          if (fp != NULL)
          {
            fscanf (fp, "%s", read_buf);
            if (strcmp (read_buf, pname) == 0)
            {
              /* add to list and expand list if needed */
              pidlist[pidlist_index++] = atoi (entry->d_name);
              if (pidlist_index == PID_LIST_BLOCK * pidlist_realloc_count)
              {
                pidlist_realloc_count++;
                pidlist = realloc (pidlist, sizeof (int) *
PID_LIST_BLOCK * pidlist_realloc_count); //Error check todo
                if (pidlist == NULL)
                {
                  return NULL;
                }
              }
            }
            fclose (fp);
          }
        }
      }


      closedir (dirp);
      pidlist[pidlist_index] = -1; /* indicates end of list */
      return pidlist;
    }

    int main (void)
    {
      int *list = pidof("lttng-relayd");

      if (!list || list[0] == -1) {
        fprintf(stderr, "lttng-relayd is not running!\n");
        free(list);
        return 1;
      }

      printf("PID of first lttng-relayd found: %d\n", list[0]);
      free(list);

      return 0;
    }

[1] http://phoxis.org/2013/09/13/find-process-ids-of-a-running-process-by-name/

Hope it helps,
Phil

>
>
>
>
> On Wed, Apr 8, 2015 at 1:45 AM, Philippe Proulx <eeppeliteloop at gmail.com>
> wrote:
>>
>> Anand,
>>
>> On Tue, Apr 7, 2015 at 4:07 PM, Anand Neeli <anand.neeli at gmail.com> wrote:
>> >
>> > Hi All,
>> > Is there any better way of getting lttng-relayd PID programmatically?
>> >
>> > like sessiond pid is in /var/run/lttng/lttng-sessiond.pid,  is there any
>> > similar way to get relayd PID?
>>
>> For which language?
>>
>> Phil
>> >
>> >
>> > Thanks,
>> > Anand Neeli
>> >
>> > _______________________________________________
>> > lttng-dev mailing list
>> > lttng-dev at lists.lttng.org
>> > http://lists.lttng.org/cgi-bin/mailman/listinfo/lttng-dev
>> >
>
>



^ permalink raw reply	[flat|nested] 5+ messages in thread

* [lttng-dev] how to get relayd pid
  2015-04-07 20:35     ` Philippe Proulx
@ 2015-04-08 13:42       ` Anand Neeli
  0 siblings, 0 replies; 5+ messages in thread
From: Anand Neeli @ 2015-04-08 13:42 UTC (permalink / raw)


Phil,
Thanks a lot for the code

Anand Neeli

On Wed, Apr 8, 2015 at 2:05 AM, Philippe Proulx <eeppeliteloop at gmail.com>
wrote:

> Anand,
>
> On Tue, Apr 7, 2015 at 4:19 PM, Anand Neeli <anand.neeli at gmail.com> wrote:
> > For C
>
> lttng-relayd does not write its PID to a file.
>
> For C, here's the programmatic way of getting the PID of the first
> lttng-relayd process found (inspired by [1]):
>
>     #include <stdlib.h>
>     #include <stdio.h>
>     #include <string.h>
>     #include <dirent.h>
>
>     /* checks if the string is purely an integer
>      * we can do it with `strtol' also
>      */
>     int check_if_number (char *str)
>     {
>       int i;
>       for (i=0; str[i] != '\0'; i++)
>       {
>         if (!isdigit (str[i]))
>         {
>           return 0;
>         }
>       }
>       return 1;
>     }
>
>     #define MAX_BUF 1024
>     #define PID_LIST_BLOCK 32
>
>     int *pidof (char *pname)
>     {
>       DIR *dirp;
>       FILE *fp;
>       struct dirent *entry;
>       int *pidlist, pidlist_index = 0, pidlist_realloc_count = 1;
>       char path[MAX_BUF], read_buf[MAX_BUF];
>
>       dirp = opendir ("/proc/");
>       if (dirp == NULL)
>       {
>         perror ("Fail");
>         return NULL;
>       }
>
>       pidlist = malloc (sizeof (int) * PID_LIST_BLOCK);
>       if (pidlist == NULL)
>       {
>         return NULL;
>       }
>
>       while ((entry = readdir (dirp)) != NULL)
>       {
>         if (check_if_number (entry->d_name))
>         {
>           strcpy (path, "/proc/");
>           strcat (path, entry->d_name);
>           strcat (path, "/comm");
>
>           /* A file may not exist, it may have been removed.
>            * dut to termination of the process. Actually we need to
>            * make sure the error is actually file does not exist to
>            * be accurate.
>            */
>           fp = fopen (path, "r");
>           if (fp != NULL)
>           {
>             fscanf (fp, "%s", read_buf);
>             if (strcmp (read_buf, pname) == 0)
>             {
>               /* add to list and expand list if needed */
>               pidlist[pidlist_index++] = atoi (entry->d_name);
>               if (pidlist_index == PID_LIST_BLOCK * pidlist_realloc_count)
>               {
>                 pidlist_realloc_count++;
>                 pidlist = realloc (pidlist, sizeof (int) *
> PID_LIST_BLOCK * pidlist_realloc_count); //Error check todo
>                 if (pidlist == NULL)
>                 {
>                   return NULL;
>                 }
>               }
>             }
>             fclose (fp);
>           }
>         }
>       }
>
>
>       closedir (dirp);
>       pidlist[pidlist_index] = -1; /* indicates end of list */
>       return pidlist;
>     }
>
>     int main (void)
>     {
>       int *list = pidof("lttng-relayd");
>
>       if (!list || list[0] == -1) {
>         fprintf(stderr, "lttng-relayd is not running!\n");
>         free(list);
>         return 1;
>       }
>
>       printf("PID of first lttng-relayd found: %d\n", list[0]);
>       free(list);
>
>       return 0;
>     }
>
> [1]
> http://phoxis.org/2013/09/13/find-process-ids-of-a-running-process-by-name/
>
> Hope it helps,
> Phil
>
> >
> >
> >
> >
> > On Wed, Apr 8, 2015 at 1:45 AM, Philippe Proulx <eeppeliteloop at gmail.com
> >
> > wrote:
> >>
> >> Anand,
> >>
> >> On Tue, Apr 7, 2015 at 4:07 PM, Anand Neeli <anand.neeli at gmail.com>
> wrote:
> >> >
> >> > Hi All,
> >> > Is there any better way of getting lttng-relayd PID programmatically?
> >> >
> >> > like sessiond pid is in /var/run/lttng/lttng-sessiond.pid,  is there
> any
> >> > similar way to get relayd PID?
> >>
> >> For which language?
> >>
> >> Phil
> >> >
> >> >
> >> > Thanks,
> >> > Anand Neeli
> >> >
> >> > _______________________________________________
> >> > lttng-dev mailing list
> >> > lttng-dev at lists.lttng.org
> >> > http://lists.lttng.org/cgi-bin/mailman/listinfo/lttng-dev
> >> >
> >
> >
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.lttng.org/pipermail/lttng-dev/attachments/20150408/9959b146/attachment-0001.html>


^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2015-04-08 13:42 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-04-07 20:07 [lttng-dev] how to get relayd pid Anand Neeli
2015-04-07 20:15 ` Philippe Proulx
2015-04-07 20:19   ` Anand Neeli
2015-04-07 20:35     ` Philippe Proulx
2015-04-08 13:42       ` Anand Neeli

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox