3 Stimmen

IPC zwischen zwei Prozessen mit Mutex regeln

Ich arbeite an einem Projekt, bei dem zwei Prozesse erstellt werden und ich möchte den IPC zwischen ihnen regeln.

Die Prozesse werden mit der Option createProces Funktion, und ich möchte eine Mutex verwenden, um einige IPC zu tun.

Unter Linux mache ich das mit Semaphoren, aber ich habe gelesen, dass ich für IPC unter Windows eine Mutex verwenden muss.

Unter Windows kann ich es nicht zum Laufen bringen. Zuerst erstelle ich die Laufflächen wie folgt:

CreateProcess(IpApplicationName, NULL, NULL, NULL, FALSE,   CREATE_NEW_CONSOLE, NULL, NULL,     &StartInfo, &ProcessInfo);
CreateProcess(IpApplicationName, NULL, NULL, NULL, FALSE,   CREATE_NEW_CONSOLE, NULL, NULL,     &StartInfo2, &ProcessInfo2);

Die Prozesse werden normal gestartet, aber wenn ich die releaseMutex von einem Prozess aufruft, wird er nicht in diesem Prozess warten müssen. Hier ist Prozess eins:

volatile HANDLE hMutex; // Global hMutex Object

int main()
{
     hMutex=CreateMutex(NULL,FALSE,NULL);

    while(1)
    {

        WaitForSingleObject(hMutex,INFINITE);
        printf("Thread writing to database...\n");
        Sleep(2000);
        ReleaseMutex(hMutex);
    }

    return 0;
 }

In Prozess zwei öffne ich die Mutex mit open mutex und kommentiere die releaseMutex (so dass es hier zu Testzwecken hängen bleibt, aber weiterläuft):

int main()
{

 while(1)
 {
    HANDLE hMutex;

    hMutex=OpenMutex(MUTEX_ALL_ACCESS,FALSE,MUTEXNAME);

    WaitForSingleObject(hMutex,INFINITE);
    printf("Thread writing to database22...\n");
    Sleep(2000);
    //ReleaseMutex(hMutex);
 }

    return 0;
}

Kann mir jemand sagen, was ich falsch mache?

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X