tinycc-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Tinycc-devel] Testing Console Application with CreateProcess


From: gregr
Subject: [Tinycc-devel] Testing Console Application with CreateProcess
Date: Wed, 11 Jan 2012 14:55:50 -0800

I'm writing a small app to do automated testing of a console application. It
needs to repeatedly run the app with various options and handle when the app
being tested crashes. I started with system(), moved on to spawn() and have
since been trying CreateProcess(). It starts the app correctly but I can't
seem to kill the process. How do I kill the process or is there a different
approach I should consider?

Greg


#include <windows.h>
#include <stdio.h>

int main(void) {

  int retCode = 0;
  PROCESS_INFORMATION pi;        /* filled in by CreateProcess */
  STARTUPINFO si;                /* startup info for the new process */

  /* print out our process ID */
  printf("Process %d reporting for duty\n",GetCurrentProcessId());

  /* Get startup info for current process, we will use this
     as the startup info for the new process as well... */
  GetStartupInfo(&si);

  /* Call CreateProcess, telling it to run DivideByZero
     with lots of defaults... (the NULLs mean "use defaults")
  */

  CreateProcess(NULL,          /* lpApplicationName */
                "DivideByZero.exe", /* lpCommandLine */
                NULL,          /* lpsaProcess */
                NULL,          /* lpsaThread */
                FALSE,         /* bInheritHandles */
                DETACHED_PROCESS, /* dwCreationFlags */
                NULL,          /* lpEnvironment */
                NULL,          /* lpCurDir */
                &si,           /* lpStartupInfo */
                &pi            /* lpProcInfo */
                );


  printf("New Process ID: %d\n",pi.dwProcessId);

  getc(stdin); //Pause here to check task manager etc...

  retCode = ExitProcess(pi.dwProcessId);

  printf("Returned %d\n\n",retCode);

  return(0);
}


//DivideByZero

#include <stdio.h>

int main(void)
{
        int result = 0;

        printf("DivideByZero is about to crash\n");

        result = 42/result;

        printf("Result: %d\n", result);

    return(0);
}






reply via email to

[Prev in Thread] Current Thread [Next in Thread]