Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - Creare un'unica istanza di un processo
Forum - C/C++ - Creare un'unica istanza di un processo

Avatar
robrock80 (Normal User)
Pro


Messaggi: 143
Iscritto: 11/12/2006

Segnala al moderatore
Postato alle 16:24
Venerdì, 26/03/2010
Salve a tutti. Come si fà a fare in modo che di un processo ne esista un unica istanza?

PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 6403
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 20:21
Venerdì, 26/03/2010
Utilizza un mutex con nome.

Crea il mutex con la

CreateMutex

e controlla se esiste già o no.


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.
PM Quote
Avatar
robrock80 (Normal User)
Pro


Messaggi: 143
Iscritto: 11/12/2006

Segnala al moderatore
Postato alle 21:18
Venerdì, 26/03/2010
Senti, ho fatto prima come mi hai detto tu, ossia
Codice sorgente - presumibilmente C#

  1. HANDLE mutex = CreateMutex(
  2.                 NULL,                        
  3.                 TRUE,                       // Anche con false non funziona            
  4. TEXT("rgklServer"));
  5.         if (mutex != NULL) {
  6.                 doServer();
  7.         }



Però non ha funzionanto, invece in quest'altra maniera si
Codice sorgente - presumibilmente C/C++

  1. HANDLE mutex = OpenMutex(MUTEX_ALL_ACCESS, TRUE, TEXT("rgklServer"));
  2.         if (mutex == NULL) {
  3.                 CreateMutex(NULL, TRUE, TEXT("rgklServer"));
  4.                 doServer();
  5.         }




Ma logicamente è meglio come hai detto tu, ossia prima crei e poi controlli in modo da avere la certezza assoluta: ho sbagliato forse qualcosa nello scrivere la tua versione?

Ultima modifica effettuata da robrock80 il 26/03/2010 alle 21:18
PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 6403
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 9:39
Sabato, 27/03/2010
La documentazione ... questa sconosciuta ... perchè non la studi approfonditamente?

CreateMutex
http://msdn.microsoft.com/en-us/library/ms682411(VS.85).aspx

e quindi

Codice sorgente - presumibilmente C/C++

  1. HANDLE mutex = CreateMutex(NULL, TRUE, TEXT("rgklServer"));
  2.  
  3. if(GetLastError() == ERROR_ALREADY_EXISTS)
  4.     printf("Server gia' in esecuzione");



Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.
PM Quote
Avatar
robrock80 (Normal User)
Pro


Messaggi: 143
Iscritto: 11/12/2006

Segnala al moderatore
Postato alle 11:28
Sabato, 27/03/2010
Ok, funziona, ma stàvolta ci avevo visto nella documentazione: avevo visto anche quello che mi avevi detto tu, ma probabilmente h

http://msdn.microsoft.com/en-us/library/ms686931(VS.85).aspx

Grazie di nuovo

Ultima modifica effettuata da robrock80 il 27/03/2010 alle 11:30
PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 6403
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 11:29
Sabato, 27/03/2010
Testo quotato

Postato originariamente da robrock80:

ci avevo visto



L'avevo capito che ci "avevi visto" ... non a caso ti ho detto "studi approfonditamente" ... :)


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.
PM Quote
Avatar
robrock80 (Normal User)
Pro


Messaggi: 143
Iscritto: 11/12/2006

Segnala al moderatore
Postato alle 11:31
Sabato, 27/03/2010
Cavoli, non ti sfugge niente, 6 proprio forte!:k:

PM Quote