Main Rückgabewert verwenden



  • Hallo,

    habs grad hinbekommen, wie ich den return wert der main vom anderen programm bekomme

    #include <windows.h>
    #include <stdio.h>

    int main()
    {
    printf("%d",system("D:\\Programmieren\\C\\test\\Debug\\mein.exe"));
    }

    total super 🙂



  • Wenn du die beiden Programme in ihren Quellen verfügbar hast, könntest du auch direkt B aus A aufrufen.

    // datei mit "echter" main()
    #include <stdio.h>
    
    int pseudo_main ( int, char ** );
    
    int main ( int argc, char **argv ) {
        printf ( "pseudo_main hat %d zurueckgegeben\n", pseudo_main (argc, argv) );
    
        return 0;
    }
    
    // datei mit "pseudo" main()
    #include <stdio.h>
    
    int pseudo_main ( int argc, char **argv ) {
        for ( int i=0; i<argc; i++ ) {
            puts ( argv[i] );
        }
        return argc;
    }
    

    Die notwendigen Änderungen sind marginal und mit Einsatz des Präprozessors sicher auch flexibel umschaltbar.



  • Das geht, ja. Es gibt immer bessere Möglichkeiten als system(), wirf einmal die Suche an. Zum Herumprobieren ist das aber egal.

    Besser wäre es, die System-eigenen Funktionen zu verwenden, um einen Kindprozess direkt (und nicht über eine Shell) zu erzeugen. Da hat man dann auch mehr Einfluss auf E/A udlg.



  • Hallo,

    danke für die Tipps.

    Das ganze soll darauf hinauslaufen das ich eine exe Programmiere und ein Freund,
    und die beiden exe miteinander kommunizieren.

    Ein Problem habe ich noch: Wie können die beiden Exe kommunizieren, wenn sie beide laufen? Also per messages oder so....

    Ein Beispiel:
    Exe 1 macht irgendwas, unabhängig von Exe2
    Exe2 macht irgendwas, unabhängig von Exe1

    Wenn jetzt Exe 1 vom Benutzer geschlossen wird, soll die Exe 1 an Exe 2 eine Botschaft schicken, das Exe 1 geschlossen wurde.

    Also kurz die Frage: Wie kann ein offenes c Programm an ein anderes offenes C programm eine Nachricht schicken?



  • Ferby schrieb:

    Also kurz die Frage: Wie kann ein offenes c Programm an ein anderes offenes C programm eine Nachricht schicken?

    such mal bei google nach 'inter-process communication', sockets, shared memory, usw. kommt drauf an, was das betriebssystem so hergibt.
    🙂



  • Ich denke an diesem Punkt ist der Thread in WinAPI besser aufgehoben. goto WinAPI;



  • Dieser Thread wurde von Moderator/in Tim aus dem Forum ANSI C in das Forum WinAPI verschoben.

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

    Dieses Posting wurde automatisch erzeugt.



  • Hallo,

    ich habe danach schon in Google gesucht, allerdings bekomme ich immer nur C++ Lösungen, ich suche aber eine Ansi C Lösung....

    Hat wer eine Idee??



  • Such einmal hier in WinAPI nach CreateProcess (wobei CreateProcess mittlerweile veraltert ist, glaube ich).



  • Die Berkeley-Sockets API ist eine reine C API. WinSockets (was zu 90% Berkeley-Sockets kompatibel ist) ist auch eine reine C API.

    Andere OS spezifische APIs zur Kommunikation zwischen Prozessen sind auch fast immer C APIs. In Windows gibt es da z.B. Named-Pipes, Mailslots, Window-Messages (man kann z.B. WM_COPYDATA verwenden) und IIRC noch ein paar andere. Alles reine C APIs.

    Also, wo ist das Problem? 🙂



  • wo find ich den da ne schönes tuti?



  • im intanetili 🙄


Anmelden zum Antworten