mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-08-14 08:09:18 +02:00
* Test programs for crashing IPC server
git-svn-id: trunk@33698 -
This commit is contained in:
parent
d53c4b4153
commit
5f8fd810b8
4
.gitattributes
vendored
4
.gitattributes
vendored
@ -2603,6 +2603,8 @@ packages/fcl-pdf/utils/ttfdump.lpr svneol=native#text/plain
|
|||||||
packages/fcl-process/Makefile svneol=native#text/plain
|
packages/fcl-process/Makefile svneol=native#text/plain
|
||||||
packages/fcl-process/Makefile.fpc svneol=native#text/plain
|
packages/fcl-process/Makefile.fpc svneol=native#text/plain
|
||||||
packages/fcl-process/Makefile.fpc.fpcmake svneol=native#text/plain
|
packages/fcl-process/Makefile.fpc.fpcmake svneol=native#text/plain
|
||||||
|
packages/fcl-process/examples/checkipcserver.lpi svneol=native#text/plain
|
||||||
|
packages/fcl-process/examples/checkipcserver.lpr svneol=native#text/plain
|
||||||
packages/fcl-process/examples/demoproject.ico -text
|
packages/fcl-process/examples/demoproject.ico -text
|
||||||
packages/fcl-process/examples/demoproject.lpi svneol=native#text/plain
|
packages/fcl-process/examples/demoproject.lpi svneol=native#text/plain
|
||||||
packages/fcl-process/examples/demoproject.pp svneol=native#text/plain
|
packages/fcl-process/examples/demoproject.pp svneol=native#text/plain
|
||||||
@ -2616,6 +2618,8 @@ packages/fcl-process/examples/ipcclient.lpi svneol=native#text/plain
|
|||||||
packages/fcl-process/examples/ipcclient.pp svneol=native#text/plain
|
packages/fcl-process/examples/ipcclient.pp svneol=native#text/plain
|
||||||
packages/fcl-process/examples/ipcserver.lpi svneol=native#text/plain
|
packages/fcl-process/examples/ipcserver.lpi svneol=native#text/plain
|
||||||
packages/fcl-process/examples/ipcserver.pp svneol=native#text/plain
|
packages/fcl-process/examples/ipcserver.pp svneol=native#text/plain
|
||||||
|
packages/fcl-process/examples/simpleipcserver.lpi svneol=native#text/plain
|
||||||
|
packages/fcl-process/examples/simpleipcserver.lpr svneol=native#text/plain
|
||||||
packages/fcl-process/examples/waitonexit.pp svneol=native#text/pascal
|
packages/fcl-process/examples/waitonexit.pp svneol=native#text/pascal
|
||||||
packages/fcl-process/fpmake.pp svneol=native#text/plain
|
packages/fcl-process/fpmake.pp svneol=native#text/plain
|
||||||
packages/fcl-process/src/amicommon/pipes.inc svneol=native#text/plain
|
packages/fcl-process/src/amicommon/pipes.inc svneol=native#text/plain
|
||||||
|
59
packages/fcl-process/examples/checkipcserver.lpi
Normal file
59
packages/fcl-process/examples/checkipcserver.lpi
Normal file
@ -0,0 +1,59 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<CONFIG>
|
||||||
|
<ProjectOptions>
|
||||||
|
<Version Value="9"/>
|
||||||
|
<General>
|
||||||
|
<Flags>
|
||||||
|
<MainUnitHasCreateFormStatements Value="False"/>
|
||||||
|
</Flags>
|
||||||
|
<SessionStorage Value="InProjectDir"/>
|
||||||
|
<MainUnit Value="0"/>
|
||||||
|
<Title Value="IPC Client"/>
|
||||||
|
<UseAppBundle Value="False"/>
|
||||||
|
<ResourceType Value="res"/>
|
||||||
|
</General>
|
||||||
|
<VersionInfo>
|
||||||
|
<StringTable ProductVersion=""/>
|
||||||
|
</VersionInfo>
|
||||||
|
<BuildModes Count="1">
|
||||||
|
<Item1 Name="Default" Default="True"/>
|
||||||
|
</BuildModes>
|
||||||
|
<PublishOptions>
|
||||||
|
<Version Value="2"/>
|
||||||
|
</PublishOptions>
|
||||||
|
<RunParams>
|
||||||
|
<local>
|
||||||
|
<FormatVersion Value="1"/>
|
||||||
|
</local>
|
||||||
|
</RunParams>
|
||||||
|
<Units Count="1">
|
||||||
|
<Unit0>
|
||||||
|
<Filename Value="checkipcserver.lpr"/>
|
||||||
|
<IsPartOfProject Value="True"/>
|
||||||
|
</Unit0>
|
||||||
|
</Units>
|
||||||
|
</ProjectOptions>
|
||||||
|
<CompilerOptions>
|
||||||
|
<Version Value="11"/>
|
||||||
|
<Target>
|
||||||
|
<Filename Value="checkipcserver"/>
|
||||||
|
</Target>
|
||||||
|
<SearchPaths>
|
||||||
|
<IncludeFiles Value="$(ProjOutDir)"/>
|
||||||
|
<UnitOutputDirectory Value="lib/$(TargetCPU)-$(TargetOS)"/>
|
||||||
|
</SearchPaths>
|
||||||
|
</CompilerOptions>
|
||||||
|
<Debugging>
|
||||||
|
<Exceptions Count="3">
|
||||||
|
<Item1>
|
||||||
|
<Name Value="EAbort"/>
|
||||||
|
</Item1>
|
||||||
|
<Item2>
|
||||||
|
<Name Value="ECodetoolError"/>
|
||||||
|
</Item2>
|
||||||
|
<Item3>
|
||||||
|
<Name Value="EFOpenError"/>
|
||||||
|
</Item3>
|
||||||
|
</Exceptions>
|
||||||
|
</Debugging>
|
||||||
|
</CONFIG>
|
55
packages/fcl-process/examples/checkipcserver.lpr
Normal file
55
packages/fcl-process/examples/checkipcserver.lpr
Normal file
@ -0,0 +1,55 @@
|
|||||||
|
program checkipcserver;
|
||||||
|
|
||||||
|
{$mode objfpc}{$H+}
|
||||||
|
|
||||||
|
uses
|
||||||
|
{$IFDEF UNIX}{$IFDEF UseCThreads}
|
||||||
|
cthreads,
|
||||||
|
{$ENDIF}{$ENDIF}
|
||||||
|
Classes, SysUtils, CustApp, simpleipc
|
||||||
|
{ you can add units after this };
|
||||||
|
|
||||||
|
type
|
||||||
|
|
||||||
|
{ TSimpleIPCClientApp }
|
||||||
|
|
||||||
|
TSimpleIPCClientApp = class(TCustomApplication)
|
||||||
|
protected
|
||||||
|
procedure DoRun; override;
|
||||||
|
public
|
||||||
|
constructor Create(TheOwner: TComponent); override;
|
||||||
|
end;
|
||||||
|
|
||||||
|
{ TSimpleIPCClientApp }
|
||||||
|
|
||||||
|
procedure TSimpleIPCClientApp.DoRun;
|
||||||
|
var
|
||||||
|
IPCClient: TSimpleIPCClient;
|
||||||
|
begin
|
||||||
|
IPCClient := TSimpleIPCClient.Create(nil);
|
||||||
|
IPCClient.ServerID:= 'ipc_test_crash';
|
||||||
|
|
||||||
|
if IPCClient.ServerRunning then
|
||||||
|
WriteLn('Server is runnning')
|
||||||
|
else
|
||||||
|
WriteLn('Server is NOT runnning');
|
||||||
|
|
||||||
|
IPCClient.Destroy;
|
||||||
|
Terminate;
|
||||||
|
end;
|
||||||
|
|
||||||
|
constructor TSimpleIPCClientApp.Create(TheOwner: TComponent);
|
||||||
|
begin
|
||||||
|
inherited Create(TheOwner);
|
||||||
|
StopOnException:=True;
|
||||||
|
end;
|
||||||
|
|
||||||
|
var
|
||||||
|
Application: TSimpleIPCClientApp;
|
||||||
|
begin
|
||||||
|
Application:=TSimpleIPCClientApp.Create(nil);
|
||||||
|
Application.Title:='IPC Client';
|
||||||
|
Application.Run;
|
||||||
|
Application.Free;
|
||||||
|
end.
|
||||||
|
|
59
packages/fcl-process/examples/simpleipcserver.lpi
Normal file
59
packages/fcl-process/examples/simpleipcserver.lpi
Normal file
@ -0,0 +1,59 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<CONFIG>
|
||||||
|
<ProjectOptions>
|
||||||
|
<Version Value="9"/>
|
||||||
|
<General>
|
||||||
|
<Flags>
|
||||||
|
<MainUnitHasCreateFormStatements Value="False"/>
|
||||||
|
</Flags>
|
||||||
|
<SessionStorage Value="InProjectDir"/>
|
||||||
|
<MainUnit Value="0"/>
|
||||||
|
<Title Value="IPC Server"/>
|
||||||
|
<UseAppBundle Value="False"/>
|
||||||
|
<ResourceType Value="res"/>
|
||||||
|
</General>
|
||||||
|
<VersionInfo>
|
||||||
|
<StringTable ProductVersion=""/>
|
||||||
|
</VersionInfo>
|
||||||
|
<BuildModes Count="1">
|
||||||
|
<Item1 Name="Default" Default="True"/>
|
||||||
|
</BuildModes>
|
||||||
|
<PublishOptions>
|
||||||
|
<Version Value="2"/>
|
||||||
|
</PublishOptions>
|
||||||
|
<RunParams>
|
||||||
|
<local>
|
||||||
|
<FormatVersion Value="1"/>
|
||||||
|
</local>
|
||||||
|
</RunParams>
|
||||||
|
<Units Count="1">
|
||||||
|
<Unit0>
|
||||||
|
<Filename Value="simpleipcserver.lpr"/>
|
||||||
|
<IsPartOfProject Value="True"/>
|
||||||
|
</Unit0>
|
||||||
|
</Units>
|
||||||
|
</ProjectOptions>
|
||||||
|
<CompilerOptions>
|
||||||
|
<Version Value="11"/>
|
||||||
|
<Target>
|
||||||
|
<Filename Value="simpleipcserver"/>
|
||||||
|
</Target>
|
||||||
|
<SearchPaths>
|
||||||
|
<IncludeFiles Value="$(ProjOutDir)"/>
|
||||||
|
<UnitOutputDirectory Value="lib/$(TargetCPU)-$(TargetOS)"/>
|
||||||
|
</SearchPaths>
|
||||||
|
</CompilerOptions>
|
||||||
|
<Debugging>
|
||||||
|
<Exceptions Count="3">
|
||||||
|
<Item1>
|
||||||
|
<Name Value="EAbort"/>
|
||||||
|
</Item1>
|
||||||
|
<Item2>
|
||||||
|
<Name Value="ECodetoolError"/>
|
||||||
|
</Item2>
|
||||||
|
<Item3>
|
||||||
|
<Name Value="EFOpenError"/>
|
||||||
|
</Item3>
|
||||||
|
</Exceptions>
|
||||||
|
</Debugging>
|
||||||
|
</CONFIG>
|
81
packages/fcl-process/examples/simpleipcserver.lpr
Normal file
81
packages/fcl-process/examples/simpleipcserver.lpr
Normal file
@ -0,0 +1,81 @@
|
|||||||
|
program simpleipcserver;
|
||||||
|
|
||||||
|
{$mode objfpc}{$H+}
|
||||||
|
|
||||||
|
uses
|
||||||
|
{$IFDEF UNIX}
|
||||||
|
BaseUnix,
|
||||||
|
{$ENDIF}
|
||||||
|
{$IFDEF windows}
|
||||||
|
Windows,
|
||||||
|
{$ENDIF}
|
||||||
|
Classes, SysUtils, CustApp, simpleipc, Crt;
|
||||||
|
|
||||||
|
type
|
||||||
|
|
||||||
|
{ TSimpleIPCServerApp }
|
||||||
|
|
||||||
|
TSimpleIPCServerApp = class(TCustomApplication)
|
||||||
|
protected
|
||||||
|
procedure DoRun; override;
|
||||||
|
public
|
||||||
|
constructor Create(TheOwner: TComponent); override;
|
||||||
|
end;
|
||||||
|
|
||||||
|
{ TSimpleIPCServerApp }
|
||||||
|
|
||||||
|
procedure TSimpleIPCServerApp.DoRun;
|
||||||
|
var
|
||||||
|
IPCServer: TSimpleIPCServer;
|
||||||
|
Key: Char;
|
||||||
|
NullObj: TObject;
|
||||||
|
begin
|
||||||
|
IPCServer := TSimpleIPCServer.Create(nil);
|
||||||
|
IPCServer.ServerID:='ipc_test_crash';
|
||||||
|
IPCServer.Global:=True;
|
||||||
|
IPCServer.StartServer;
|
||||||
|
NullObj := nil;
|
||||||
|
|
||||||
|
WriteLn('Server started');
|
||||||
|
WriteLn(' Press e to finish with an exception');
|
||||||
|
WriteLn(' Press t to terminate through OS api - ', {$IFDEF UNIX}'Kill'{$ELSE}'TerminateProcess'{$ENDIF});
|
||||||
|
WriteLn(' Press any other key to finish normally');
|
||||||
|
Key := ReadKey;
|
||||||
|
|
||||||
|
case Key of
|
||||||
|
'e':
|
||||||
|
begin
|
||||||
|
NullObj.AfterConstruction;
|
||||||
|
end;
|
||||||
|
't':
|
||||||
|
begin
|
||||||
|
{$ifdef unix}
|
||||||
|
FpKill(FpGetpid, 9);
|
||||||
|
{$endif}
|
||||||
|
{$ifdef windows}
|
||||||
|
TerminateProcess(GetCurrentProcess, 0);
|
||||||
|
{$endif}
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
IPCServer.Active:=False;
|
||||||
|
WriteLn('Server stopped');
|
||||||
|
IPCServer.Destroy;
|
||||||
|
Terminate;
|
||||||
|
end;
|
||||||
|
|
||||||
|
constructor TSimpleIPCServerApp.Create(TheOwner: TComponent);
|
||||||
|
begin
|
||||||
|
inherited Create(TheOwner);
|
||||||
|
StopOnException:=True;
|
||||||
|
end;
|
||||||
|
|
||||||
|
var
|
||||||
|
Application: TSimpleIPCServerApp;
|
||||||
|
begin
|
||||||
|
Application:=TSimpleIPCServerApp.Create(nil);
|
||||||
|
Application.Title:='IPC Server';
|
||||||
|
Application.Run;
|
||||||
|
Application.Free;
|
||||||
|
end.
|
||||||
|
|
Loading…
Reference in New Issue
Block a user