mturk       2004/04/08 00:43:01

  Added:       daemon/src/native/nt/procrun/samples cchild.vcproj cchild.c
  Log:
  Child sample application.
  Simple console application used for teststing stdio redirection and
  signaling mechanism between parent and child.
  
  Revision  Changes    Path
  1.1                  
jakarta-commons/daemon/src/native/nt/procrun/samples/cchild.vcproj
  
  Index: cchild.vcproj
  ===================================================================
  <?xml version="1.0" encoding="Windows-1252"?>

  <VisualStudioProject

        ProjectType="Visual C++"

        Version="7.10"

        Name="cchild"

        ProjectGUID="{E9ABF9C5-CCF7-4372-B42A-07584D2441D8}"

        Keyword="Win32Proj">

        <Platforms>

                <Platform

                        Name="Win32"/>

        </Platforms>

        <Configurations>

                <Configuration

                        Name="Release|Win32"

                        OutputDirectory="..\obj\Release"

                        IntermediateDirectory="..\obj\Release"

                        ConfigurationType="1"

                        CharacterSet="2">

                        <Tool

                                Name="VCCLCompilerTool"

                                PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"

                                RuntimeLibrary="2"

                                UsePrecompiledHeader="0"

                                WarningLevel="3"

                                Detect64BitPortabilityProblems="TRUE"

                                DebugInformationFormat="3"/>

                        <Tool

                                Name="VCCustomBuildTool"/>

                        <Tool

                                Name="VCLinkerTool"

                                OutputFile="../bin/cchild.exe"

                                LinkIncremental="1"

                                GenerateDebugInformation="TRUE"

                                SubSystem="1"

                                OptimizeReferences="2"

                                EnableCOMDATFolding="2"

                                EntryPointSymbol=""

                                TargetMachine="1"/>

                        <Tool

                                Name="VCMIDLTool"/>

                        <Tool

                                Name="VCPostBuildEventTool"/>

                        <Tool

                                Name="VCPreBuildEventTool"/>

                        <Tool

                                Name="VCPreLinkEventTool"/>

                        <Tool

                                Name="VCResourceCompilerTool"/>

                        <Tool

                                Name="VCWebServiceProxyGeneratorTool"/>

                        <Tool

                                Name="VCXMLDataGeneratorTool"/>

                        <Tool

                                Name="VCWebDeploymentTool"/>

                        <Tool

                                Name="VCManagedWrapperGeneratorTool"/>

                        <Tool

                                Name="VCAuxiliaryManagedWrapperGeneratorTool"/>

                </Configuration>

                <Configuration

                        Name="Debug|Win32"

                        OutputDirectory="..\obj\Debug"

                        IntermediateDirectory="..\obj\Debug"

                        ConfigurationType="1"

                        CharacterSet="2">

                        <Tool

                                Name="VCCLCompilerTool"

                                Optimization="0"

                                PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"

                                MinimalRebuild="TRUE"

                                BasicRuntimeChecks="3"

                                RuntimeLibrary="3"

                                UsePrecompiledHeader="0"

                                WarningLevel="3"

                                Detect64BitPortabilityProblems="TRUE"

                                DebugInformationFormat="4"/>

                        <Tool

                                Name="VCCustomBuildTool"/>

                        <Tool

                                Name="VCLinkerTool"

                                OutputFile="../bin/cchildd.exe"

                                LinkIncremental="2"

                                GenerateDebugInformation="TRUE"

                                ProgramDatabaseFile="$(OutDir)/cchild.pdb"

                                SubSystem="1"

                                TargetMachine="1"/>

                        <Tool

                                Name="VCMIDLTool"/>

                        <Tool

                                Name="VCPostBuildEventTool"/>

                        <Tool

                                Name="VCPreBuildEventTool"/>

                        <Tool

                                Name="VCPreLinkEventTool"/>

                        <Tool

                                Name="VCResourceCompilerTool"/>

                        <Tool

                                Name="VCWebServiceProxyGeneratorTool"/>

                        <Tool

                                Name="VCXMLDataGeneratorTool"/>

                        <Tool

                                Name="VCWebDeploymentTool"/>

                        <Tool

                                Name="VCManagedWrapperGeneratorTool"/>

                        <Tool

                                Name="VCAuxiliaryManagedWrapperGeneratorTool"/>

                </Configuration>

                <Configuration

                        Name="Debug Unicode|Win32"

                        OutputDirectory="..\obj\$(ConfigurationName)"

                        IntermediateDirectory="..\obj\$(ConfigurationName)"

                        ConfigurationType="1"

                        CharacterSet="1">

                        <Tool

                                Name="VCCLCompilerTool"

                                Optimization="0"

                                
PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;_UNICODE"

                                MinimalRebuild="TRUE"

                                BasicRuntimeChecks="3"

                                RuntimeLibrary="3"

                                UsePrecompiledHeader="0"

                                WarningLevel="3"

                                Detect64BitPortabilityProblems="TRUE"

                                DebugInformationFormat="4"/>

                        <Tool

                                Name="VCCustomBuildTool"/>

                        <Tool

                                Name="VCLinkerTool"

                                OutputFile="../bin/cchildud.exe"

                                LinkIncremental="2"

                                GenerateDebugInformation="TRUE"

                                ProgramDatabaseFile="$(OutDir)/cchild.pdb"

                                SubSystem="1"

                                TargetMachine="1"/>

                        <Tool

                                Name="VCMIDLTool"/>

                        <Tool

                                Name="VCPostBuildEventTool"/>

                        <Tool

                                Name="VCPreBuildEventTool"/>

                        <Tool

                                Name="VCPreLinkEventTool"/>

                        <Tool

                                Name="VCResourceCompilerTool"/>

                        <Tool

                                Name="VCWebServiceProxyGeneratorTool"/>

                        <Tool

                                Name="VCXMLDataGeneratorTool"/>

                        <Tool

                                Name="VCWebDeploymentTool"/>

                        <Tool

                                Name="VCManagedWrapperGeneratorTool"/>

                        <Tool

                                Name="VCAuxiliaryManagedWrapperGeneratorTool"/>

                </Configuration>

                <Configuration

                        Name="Release Unicode|Win32"

                        OutputDirectory="..\obj\$(ConfigurationName)"

                        IntermediateDirectory="..\obj\$(ConfigurationName)"

                        ConfigurationType="1"

                        CharacterSet="2">

                        <Tool

                                Name="VCCLCompilerTool"

                                PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"

                                RuntimeLibrary="2"

                                UsePrecompiledHeader="0"

                                WarningLevel="3"

                                Detect64BitPortabilityProblems="TRUE"

                                DebugInformationFormat="3"/>

                        <Tool

                                Name="VCCustomBuildTool"/>

                        <Tool

                                Name="VCLinkerTool"

                                OutputFile="../bin/cchildu.exe"

                                LinkIncremental="1"

                                GenerateDebugInformation="TRUE"

                                SubSystem="1"

                                OptimizeReferences="2"

                                EnableCOMDATFolding="2"

                                TargetMachine="1"/>

                        <Tool

                                Name="VCMIDLTool"/>

                        <Tool

                                Name="VCPostBuildEventTool"/>

                        <Tool

                                Name="VCPreBuildEventTool"/>

                        <Tool

                                Name="VCPreLinkEventTool"/>

                        <Tool

                                Name="VCResourceCompilerTool"/>

                        <Tool

                                Name="VCWebServiceProxyGeneratorTool"/>

                        <Tool

                                Name="VCXMLDataGeneratorTool"/>

                        <Tool

                                Name="VCWebDeploymentTool"/>

                        <Tool

                                Name="VCManagedWrapperGeneratorTool"/>

                        <Tool

                                Name="VCAuxiliaryManagedWrapperGeneratorTool"/>

                </Configuration>

        </Configurations>

        <References>

        </References>

        <Files>

                <Filter

                        Name="Source Files"

                        Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"

                        UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}">

                        <File

                                RelativePath=".\cchild.c">

                        </File>

                </Filter>

                <Filter

                        Name="Header Files"

                        Filter="h;hpp;hxx;hm;inl;inc;xsd"

                        UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}">

                </Filter>

                <Filter

                        Name="Resource Files"

                        
Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx"

                        UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}">

                </Filter>

        </Files>

        <Globals>

        </Globals>

  </VisualStudioProject>

  
  
  
  1.1                  jakarta-commons/daemon/src/native/nt/procrun/samples/cchild.c
  
  Index: cchild.c
  ===================================================================
  /* Copyright 2000-2004 The Apache Software Foundation
   *
   * Licensed under the Apache License, Version 2.0 (the "License");
   * you may not use this file except in compliance with the License.
   * You may obtain a copy of the License at
   *
   *     http://www.apache.org/licenses/LICENSE-2.0
   *
   * Unless required by applicable law or agreed to in writing, software
   * distributed under the License is distributed on an "AS IS" BASIS,
   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   * See the License for the specific language governing permissions and
   * limitations under the License.
   */
   
  /* Simple console child */
  
  #include <windows.h>
  #include <stdio.h>
  #include <stdlib.h>
  #include <stddef.h>
  #include <conio.h>
  #include <time.h>
  #include <process.h>    /* _beginthread, _endthread */
  #include <fcntl.h>
  #include <io.h>
  
  #define STDIN_FILENO  0
  #define STDOUT_FILENO 1
  #define STDERR_FILENO 2
  
  #define STDO_MESSAGE "Simple STDOUT_FILENO message\n"
  #define STDE_MESSAGE "Simple STDERR_FILENO message\n"
  
  #define NLOOPS          5
  #define NTHREADS       10
  
  static int do_echo = 0;
  BOOL WINAPI ControlHandler ( DWORD dwCtrlType )
  {
     printf("\nCTRL Event %d ", dwCtrlType);
     switch (dwCtrlType) {
     case CTRL_BREAK_EVENT:
        printf("CTRL+BREAK\n");
        exit(1);
        return TRUE;
     case CTRL_C_EVENT:
        printf("CTRL+C");
        return TRUE;
        break;
  
     }
     putch('\n');
     return FALSE;
  }
  
  unsigned __stdcall threadfunc(void *args)
  {
      int i, p , r;
      p = (int)(size_t)args;
      printf("Created thread %d %04x\n", p, GetCurrentThreadId());
      srand((unsigned)time(NULL) + p);
      for (i = 0; i < NLOOPS; i++) {
          r = rand() % 1000;
          Sleep(r);
          printf("Thread %d message %d\n", p, i);
      }
      printf("Quiting thread %d %04x\n", p, GetCurrentThreadId());
      _endthreadex(0);
      return 0;
  }
  
  
  int main(int argc, char *argv[])
  {
      int i, conio = 0, threads = 0;
      char buf[256];
      HANDLE htrd[NTHREADS];
  
      OutputDebugString("cchild starting");
      fprintf(stdout, "cchild starting %s\n", argv[0]);
      fflush(stdout);
      SetConsoleCtrlHandler(ControlHandler, TRUE);
      Sleep(1000);
      
      for (i = 0; i < __argc; i++) {
          fprintf(stdout, "argv[%d] %s\n", i, __argv[i]);
          fflush(stdout);
          if (strcmp(__argv[i], "--") == 0)
              do_echo = 1;
          else if (strcmp(__argv[i], "-c") == 0)
              conio = 1;
          else if (strcmp(__argv[i], "-t") == 0)
              threads = 1;
      }
      fflush(stdout);
      fprintf(stderr, "Simple stderr message\n");
      fflush(stderr);
      write(STDOUT_FILENO, STDO_MESSAGE, sizeof(STDO_MESSAGE) - 1);
      write(STDERR_FILENO, STDE_MESSAGE, sizeof(STDE_MESSAGE) - 1);
      
      if (conio) {
          cputs("Type 'Y' when finished typing keys...");
          do {
              i = getch();
              i = toupper(i);
          } while (i != 'Y');
          putch('\n');
      }
      if (do_echo) {
          cputs("Going to echo loop...\n");
          while ((i = read(STDIN_FILENO, buf, 256)) > 0) {
              buf[i] = '\0';
              fputs(buf, stdout);
              if (strcmp(buf, "quit\n") == 0)
                  break;
          }
      }
      if (threads) {
          for (i = 0; i < NTHREADS; i++) {
              unsigned id;
              htrd[i] = (HANDLE)_beginthreadex(NULL, 0, threadfunc, (void *)(size_t)i, 
0, &id);
          }
          WaitForMultipleObjects(10, htrd, TRUE, INFINITE);
      }
  
      fprintf(stdout, "cchild finishing\n");
      fprintf(stdout, "cchild finished\n");
      Sleep(1000);
      OutputDebugString("cchild Ended");
      return 0;
  }
  
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to