Sfoglia il codice sorgente

+ test/example programs for WaitOnExit with time out

git-svn-id: trunk@32995 -
florian 9 anni fa
parent
commit
356ab8f63d

+ 3 - 0
.gitattributes

@@ -2584,6 +2584,9 @@ packages/fcl-process/examples/demoproject.res -text
 packages/fcl-process/examples/demoruncommand.lpi svneol=native#text/plain
 packages/fcl-process/examples/demoruncommand.pp svneol=native#text/plain
 packages/fcl-process/examples/echoparams.pp svneol=native#text/plain
+packages/fcl-process/examples/empty.pp svneol=native#text/pascal
+packages/fcl-process/examples/infinity.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/src/amicommon/pipes.inc svneol=native#text/plain
 packages/fcl-process/src/amicommon/process.inc svneol=native#text/plain

+ 2 - 0
packages/fcl-process/examples/empty.pp

@@ -0,0 +1,2 @@
+begin
+end.

+ 3 - 0
packages/fcl-process/examples/infinity.pp

@@ -0,0 +1,3 @@
+begin
+  while true do;
+end.

+ 33 - 0
packages/fcl-process/examples/waitonexit.pp

@@ -0,0 +1,33 @@
+{$mode objfpc}
+uses
+  process,sysutils;
+
+procedure ExecuteProcess(const Path: string);
+var
+  P: TProcess;
+
+begin
+  P := TProcess.Create(nil);
+  try
+    writeln('Running ',Path);
+    P.Executable:=Path;
+    P.Execute;
+    P.WaitOnExit(1337);
+
+    while P.Running do
+      begin
+        P.Terminate(255);
+        Writeln(stderr,'Terminate requested for ',Path);
+        Sleep(1);
+      end;
+    writeln(Path,' returned with exit code: ',P.ExitCode);
+
+  finally
+    P.Free;
+  end;
+end;
+
+begin
+  ExecuteProcess('./infinity');
+  ExecuteProcess('./empty');
+end.