auf Variable des Hauptprog nach fork() und execl() im Unterprog zugreifen



  • Dringed!

    Wer kann mir weiterhelfen? Ich programmiere mit C unter Unix.

    Ich habe in meinem Hauptprogramm eine Stringvariable errmsg, auf die meine Unterprogramme, die mit fork() und execl() ausgeführt werden, schreiben sollen. Die Variable als global zu definieren, funktioniert nicht, da alles durch execl() überschrieben wird.

    Ich versuche nun die Adresse von errmsg als Parameter von execl zu übergeben, aber das funktioniert auch nicht.

    Die Funktionsweise des Programms läuft folgendermaßen: Das Hauptprogramm startet ein Unterprogramm, welches abgearbeitet wird. Nach Beendigung des Unterprogramms läuft das Hauptprogramm weiter, bis wieder ein Unterprogramm aufgerufen wird. Eigentlich recht simpel...

    Was muss ich machen, damit das Unterprogramm Zugriff auf die Variable erhält, und danach das Hauptprogramm diese wieder auslesen kann?

    Vielen Dank!
    Andreas

    Codefragmente hier:

    Hauptprogr:

    char *errmsg ="unveraendert";
    
    switch(fork())
    {
        case -1 : printf("Fehler bei fork()..........\n");
            exit(0);
        case 0  : execl("./unterprog", &errmsg,NULL);
            printf("Fehler bei exec()..........\n");
            exit(0);
        default:  wait(NULL);
    }
    

    Unterprogramm:

    int main(int argc, char **argv)
    {
    
    	char errmsg = &argv;
    	errmsg = "schreiben erfolgreich\n";
    }
    


  • vfork()



  • Dieser Thread wurde von Moderator/in Shade Of Mine 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.



  • Das geht so ja auch nicht und selbst wenn es gehen würde, würde dein Programmcode falsch sein.

    http://www.ecst.csuchico.edu/~beej/guide/ipc/



  • kingruedi schrieb:

    und selbst wenn es gehen würde, würde dein Programmcode falsch sein.

    Ein Programm das geht ist niemals falsch.



  • Ich glaube kingruedi meinte eher die theoretische Möglichkeit, dass das mit execl ausgeführte Programm in den Speicher eines anderen schreiben kann...



  • Bug schrieb:

    Ein Programm das geht ist niemals falsch.

    so ein blödsinn



  • DrGreenthumb schrieb:

    Bug schrieb:

    Ein Programm das geht ist niemals falsch.

    so ein blödsinn

    Doch. Ich muß das wissen (siehe meinen Namen)
    Ne, aber im Ernst: Warum Blödsinn?



  • ja nu, siehe zB. diesen thread. Manchmal funktioniert etwas, obwohls eigentlich falsch ist.

    char* x = "hallo";
    strcpy(x, "blub");

    Funktioniert vielleicht, ist aber falsch.



  • OK, hast Recht.


Log in to reply