This repository has been archived on 2024-12-16. You can view files and clone it, but cannot push or open issues or pull requests.
CodeBlocksPortable/WATCOM/samples/clibexam/spawn.c

71 lines
1.6 KiB
C

#include <stdio.h>
#include <stdlib.h>
#include <process.h>
#include <errno.h>
#include <string.h>
void main()
{
int process_id;
#if defined(__OS2__) || defined(__NT__)
int status, rc;
#endif
process_id = spawnl( P_NOWAIT, "child.exe",
"child", "5", NULL );
if( process_id == -1 ) {
printf( "spawn failed - %s\n", strerror( errno ) );
exit( EXIT_FAILURE );
}
printf( "Process id = %d\n", process_id );
#if defined(__OS2__) || defined(__NT__)
rc = cwait( &status, process_id, WAIT_CHILD );
if( rc == -1 ) {
printf( "wait failed - %s\n", strerror( errno ) );
} else {
printf( "wait succeeded - %x\n", status );
switch( status & 0xff ) {
case 0:
printf( "Normal termination exit code = %d\n",
status >> 8 );
break;
case 1:
printf( "Hard-error abort\n" );
break;
case 2:
printf( "Trap operation\n" );
break;
case 3:
printf( "SIGTERM signal not intercepted\n" );
break;
default:
printf( "Bogus return status\n" );
}
}
#endif
printf( "spawn completed\n" );
}
/*
[child.c]
#include <stdio.h>
#include <stdlib.h>
#include <dos.h>
void main( int argc, char *argv[] )
{
int delay;
if( argc <= 1 )
exit( EXIT_FAILURE );
delay = atoi( argv[1] );
printf( "I am a child going to sleep "
"for %d seconds\n", delay );
sleep( delay );
printf( "I am a child awakening\n" );
exit( 123 );
}
*/