package perso.device.system;
//Import needed packages
import java.io.File;
import java.io.IOException;
import java.security.AccessController;
import sun.security.action.GetPropertyAction;
/**
* <p>Title : UtilitiesSystem</p>
* <p>Description : Class device for System</p>
* <p>Copyright : Copyright (c) 2007</p>
* <p>Society : Perso</p>
* @author Indiana_jules
* @version 1.0
*/
public class UtilitiesSystem {
/**Method detecting if an instance of a program is running
* @param name Program's name
* @return Return the state
* @throws IOException Input/Output error
*/
public static synchronized Boolean isSingletonProgram(String name) throws IOException {
Boolean statut = true;
GetPropertyAction a = new GetPropertyAction("java.io.tmpdir");
String tmpdir = ((String) AccessController.doPrivileged(a));
File temporaryFile = new File(tmpdir + "/" + name +".tmp");
statut = !temporaryFile.exists();
if(statut){
temporaryFile.createNewFile();
temporaryFile.deleteOnExit();
}
return statut;
}
}
Remarque :
Nous accédons au répertoire temporaire du système (où normalement, nous avons toujours le droit d'accès et d'écriture), créer u fichier qui se détruit à la fin du programme. Ainsi, si le fichier n'est pas créé, alors nous pouvons lancer le programme. Sinon, nous devons le stopper. Par contre, si nous l'arrêtons brutalement, il risque ne plus marcher :/