Startparameter überprüfen?



  • hallo, ich möchte überprüfen, ob ein programm direkt oder über das dazugehörige frontend gestartet wurde. wie kann ich dies tun? das frontend ist ein shellskript. meine idee war einfach einen parameter mit dem skript mitzuschicken und wenn der im programm dann zb 0 ist, dann wure das programm direkt gestartet. aber es muss doch auch anders gehen?! es sollen dennoch ein paar parameter zugelassen werden, also so:

    programmname -a 111 -f10 -d 233232

    aber eben alles ausser dieser parameter soll nicht akzeptiert werden!

    ne idee?

    DANKE:-)



  • vielleicht hilft dir der Beispielcode (ist aber leider nicht sehr portabel und geht wahrscheinlich nur unter Linux!)

    #include <unistd.h>
    #include <stdio.h>
    #include <string.h>
    
    const char *const binary="/usr/local/bin/foobar";
    
    int main() {
      char file[100];
      sprintf(file,"/proc/%d/exe",getppid());
      char buffer[100];
      if(readlink(file,buffer,100)==-1) {
        perror("stat");
        return 1;
      }
      if(!strcmp(buffer,binary))
        puts("gestartet durch das Front-End");
      else if(!strcmp(buffer,"/bin/sh") || !strcmp(buffer,"/bin/bash"))
        puts("durch die Shell gestartet");
      else
        puts("gestartet durch etwas anderes");
      return 0;
    }
    


  • Math55 schrieb:

    hallo, ich möchte überprüfen, ob ein programm direkt oder über das dazugehörige frontend gestartet wurde. wie kann ich dies tun?

    Vorschlag: lege einen symbolischen Link an, der auf dein Programm zeigt. Das Frontend startet das Programm über den Link, damit steht in argv[0] dann auch der Name des Links.
    So ist das bei verschiedenen Tools unter Linux gelöst, z. B. ist gunzip ein Link auf gzip (jedenfalls war das mal so).

    Martin


Anmelden zum Antworten