Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 20

Discussione: [C] mutex NT

  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2003
    Messaggi
    698

    [C] mutex NT

    come si gestiscono i mutex di win nt?

    so che ci sono due operazioni possibili, WaitForSingleObject e ReleaseMutex. Se io sono un processo e devo operare in maniera esclusiva, chiamo waitforsingleobject, faccio le mie cose, poi lo libero con releasemutex? ho capito bene?

    e poi un'altra cosa:
    OpenMutex(DWORD desired_access,BOOL inherit_handle,LPCSTR lp_name)
    qualcuno conosce le costanti simboliche,e relativo significato, da specificare alla creazione?

    grazie!

  2. #2
    Utente di HTML.it
    Registrato dal
    Feb 2003
    Messaggi
    698
    niente ?

  3. #3
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    4
    tu cosa devi fare^


    vuoi che la tua applicazione si
    avviii in usa ISTANZA singola?

  4. #4
    Utente di HTML.it
    Registrato dal
    Feb 2003
    Messaggi
    698
    no
    io ho due processi che devono operare in maniera mutuamente esclusiva, e li devo sincronizzare

  5. #5
    Utente di HTML.it
    Registrato dal
    Feb 2003
    Messaggi
    698
    anche se in realta il problema e' un po cambiato ora
    posto il codice che e' meglio
    int main (int argc, char *argv[]) {
    HANDLE mutex;
    BOOL proc;
    STARTUPINFO s;
    PROCESS_INFORMATION p;
    DWORD exit_code;

    memset(&s,0,sizeof(s));
    memset(&p,0,sizeof(p));
    s.cb=sizeof(s);

    int OK=1;

    if (argc==1) {
    proc = CreateProcess("prova_cancellare.exe","prova_cancel lare.exe son",
    NULL,
    NULL,
    TRUE,
    NORMAL_PRIORITY_CLASS,
    NULL,
    NULL,
    &s,
    &p);


    if (proc==0) printf("Chiamata fallita\n");

    mutex = CreateMutex (NULL,TRUE,"mutex");
    if (mutex==NULL) {printf("\nErrore creazione mutex");system("PAUSE");ExitProcess(0);}
    printf("\nMutex nel padre: %d ",mutex);
    //WaitForSingleObject(mutex,INFINITE);
    }
    else {
    mutex = OpenMutex(MUTEX_ALL_ACCESS,FALSE,"mutex");
    if (mutex==NULL) {printf("\nErrore apertura mutex\n");system("PAUSE");ExitProcess(0);}
    printf("\nMutex nel figlio: %d \n",mutex);
    system("PAUSE");
    }
    }

    il problema e' che non riesco a far aprire il mutex (creato nel primo processo) all'altro processo, che non lo vede

  6. #6
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    4
    capisco.

    anzi no


    vuoi avviare 1 processo e aspettare che finisca?
    e poi riprendere quello che stavi eseguendo?

  7. #7
    Utente di HTML.it
    Registrato dal
    Feb 2003
    Messaggi
    698
    postato il codice

    c'e' anche un po di zavorrina per il debug sorry

  8. #8
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    4
    se stai su NT
    prova ad aggiungere anche "SYNCHRONIZE"
    come parametro di apertura del mutex nel tuo caso!

  9. #9
    Utente di HTML.it
    Registrato dal
    Feb 2003
    Messaggi
    698
    niente da fare

    non lo apre

  10. #10
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    4
    ok. hai gia provato ad usare i semafori?

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.