Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - Creare una e una sola istanza di un programma
Forum - C/C++ - Creare una e una sola istanza di un programma

Avatar
### (Normal User)
Rookie


Messaggi: 44
Iscritto: 07/09/2006

Segnala al moderatore
Postato alle 18:24
Martedì, 26/09/2006

Dovrei fare un programma tale che non possano essere eseguite più sue istanze contemporaneamente, in particolare il programma lavora con dei file e avviarne più istanze potrebbe provocare "interferenze".

Che metodo mi consigliate di usare?:)

Grazie a tutti!:k:


"Mouse not found. Click mouse button to continue" (Win95).
PM Quote
Avatar
Rand (Ex-Member)
Pro


Messaggi: 163
Iscritto: 17/05/2005

Segnala al moderatore
Postato alle 18:31
Martedì, 26/09/2006
usa i semafori qnd scrivi sui file e anzichè usare + instanze del prg usa i thread ;)


Ero solito portare una pallottola nel taschino, all'altezza del cuore.
Un giorno un tizio mi tirò addosso una Bibbia, ma la pallottola mi salvò la vita.

(Woody Allen)
PM Quote
Avatar
pierotofy (Admin)
Guru^2


Messaggi: 6112
Iscritto: 04/12/2003

Segnala al moderatore
Postato alle 23:32
Mercoledì, 27/09/2006
Se sei in Unix mi pare che hai la funzione flock per gestire più files senza interferenze.. ma non ne sono sicuro.


Seguimi su Twitter: http://www.twitter.com/pierotofy

Fai quello che ti piace, e fallo bene.
PM Quote
Avatar
### (Normal User)
Rookie


Messaggi: 44
Iscritto: 07/09/2006

Segnala al moderatore
Postato alle 17:56
Domenica, 01/10/2006

Grazie a tutti, alla fine ho trovato + comodo l'utilizzo mutex (sono su windows).


"Mouse not found. Click mouse button to continue" (Win95).
PM Quote
Avatar
### (Normal User)
Rookie


Messaggi: 44
Iscritto: 07/09/2006

Segnala al moderatore
Postato alle 17:58
Domenica, 01/10/2006
Probabilmente potrebbe tornare utile a qualcun altro in futuro ;)

Codice sorgente - presumibilmente C++

  1. #include <stdio.h>
  2. #include <windows.h>
  3.  
  4. int WINAPI WinMain (HINSTANCE hThisInstance,
  5.                     HINSTANCE hPrevInstance,
  6.                     LPSTR lpszArgument,
  7.                     int nFunsterStil)
  8.  
  9. {
  10.     HANDLE CurrMutex=CreateMutexA(0,1,"mymutex");
  11.  
  12.     if( CurrMutex==0 || WaitForSingleObject(CurrMutex,100)!=0)
  13.     {
  14.         CloseHandle(CurrMutex);
  15.         return 0;
  16.     }
  17.    
  18.     Sleep(5000);
  19.        
  20.     ReleaseMutex(CurrMutex);
  21.    
  22.    
  23.     return 0;
  24. }



"Mouse not found. Click mouse button to continue" (Win95).
PM Quote
Avatar
Rand (Ex-Member)
Pro


Messaggi: 163
Iscritto: 17/05/2005

Segnala al moderatore
Postato alle 23:39
Venerdì, 06/10/2006
la metodologia mutex (mutua esclusione) serve x implementare i semafori :D

alla fine l'hai svolto come avevo proposto io....
:k:


Ero solito portare una pallottola nel taschino, all'altezza del cuore.
Un giorno un tizio mi tirò addosso una Bibbia, ma la pallottola mi salvò la vita.

(Woody Allen)
PM Quote