Что я делаю нетак?

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by th13fnano, 8 Dec 2008.

  1. th13fnano

    th13fnano New Member

    Joined:
    8 Dec 2008
    Messages:
    6
    Likes Received:
    1
    Reputations:
    0
    Хочу организовать метод doublerun на делфи. Суть такова - один процесс следит запущен ли другой а другой следит за первым. Если один из них умерает другой запускает его опять. Уже делал раз такое - работало наура. Сорцы потеряны. Вот собственно код, непойму почему неработает.

    Code:
    {$APPTYPE CONSOLE}
    program test;
    
    uses
    	SysUtils, Windows, Shellapi;
    const
    	mutex1 :string = 'ABDCDBEFBDEBFAB';
    	mutex2 :string = 'EFDACBDFEABDCDF';
    Begin
    	if (OpenMutex(MUTEX_ALL_ACCESS, false, Pchar(mutex1)) = 0) then
    	Begin
    		CreateMutex(nil, false, Pchar(mutex1));
    		Writeln(mutex1);
    	End else Begin
    		if (OpenMutex(MUTEX_ALL_ACCESS, false, Pchar(mutex2)) = 0) then Begin
    			CreateMutex(nil, false, Pchar(mutex2));
    			Writeln(mutex2);
    		End
    	End;
    	while true do begin
    		sleep(1000);
    		writeln(OpenMutex(MUTEX_ALL_ACCESS, false, Pchar(mutex1)));
    		writeln(OpenMutex(MUTEX_ALL_ACCESS, false, Pchar(mutex2)));
    		if (OpenMutex(MUTEX_ALL_ACCESS, false, Pchar(mutex1)) > 0) and
    		(OpenMutex(MUTEX_ALL_ACCESS, false, Pchar(mutex2)) > 0) Then
    		Begin
    		end else Begin
    			Shellapi.ShellExecute(0,'open',pchar(Paramstr(0)),'','',1);
    			sleep(10);
    		End;
    	end;
    End.
    
     
  2. th13fnano

    th13fnano New Member

    Joined:
    8 Dec 2008
    Messages:
    6
    Likes Received:
    1
    Reputations:
    0
    Кто поможет написать?