per execl() eine Adresse weitergeben



  • Hallo,

    ich habe versucht einem Programm per execl() eine Adresse weiterzugeben, die dann als Startadresse eines Zeigers herhalten soll. Damit wollte ich bezwecken, dass immer der selbe Speicherbereich für mehrere Programme benutzt wird.

    Also in ProgA wird z.B. ein Prozess mit execl() überlagert und dem neuen Programm möchte ich einen Zeiger bzw. dessen Adresse! aus dem ProgA als Argument übergeben.

    Im neuen Programm ProgB kommen aber irgendwie 6 Argumente an, welche, wenn ich sie ausgebe, nur kryptische Zeichenfolgen darstellen. Eigentlich übergebe ich mit execl("programmname", zeiger) ja nur 1 Argument.

    Geht das überhaupt was ich vorhabe? Und wenn ja, wie geht das? 🙂



  • Wird der Bereich auf den der Zeiger zeigt ned eh gelöscht wenn mit exec() ein neues programm im prozess gestartet wird??



  • Dieser Thread wurde von Moderator/in c.rackwitz aus dem Forum ANSI C in das Forum Linux/Unix verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • kurz: das geht so nicht. aber du kannst mal nach shared memory googlen.



  • man: execl bekommt eine Serie von Char-Pointern, die der neue Prozess als argv-Argumente übernimmt (da brauchst du als letztes einen NULL-Pointer, damit die Funktion weiß, wo diese Serie aufhört - andernfalls interpretiert sie irgendwelche zufälligen Speicherbereiche als Adressen).



  • CStoll, danke. Das hatte ich ganz vergessen, du hast recht mit dem Null Pointer. Allerdings waren alle der 6 Werte irgendein Datenmüll, also wurde selbst das erste nicht richtig übergeben. Aber trotzdem danke für den Hinweis.

    @ness
    ja stimmt, SM wäre ne Möglichkeit. Leider ist das ne Übungsaufgabe und der Prof möchte hierbei bewusst auf die IPC Methoden verzichten, Dateien sind das einzige was erstmal erlaubt ist.


Anmelden zum Antworten