?? select_pipe.c.bak
字號(hào):
#include "selectLib.h"
#include "taskLib.h"
#include "pipeDrv.h"
#include "ioLib.h"
static int giPipeFd1 = -1;
static int giPipeFd2 = -1;
static int giPipeFd3 = -1;
static int giTaskId = -1;
int send1( void )
{
unsigned char pucDataBuff[ 20 ] = "pipeFd1_data";
return( write( giPipeFd1, pucDataBuff, 20 ) );
}
int send2( void )
{
unsigned char pucDataBuff[ 20 ] = "pipeFd2_data";
return( write( giPipeFd2, pucDataBuff, 20 ) );
}
int send3( void )
{
unsigned char pucDataBuff[ 20 ] = "pipeFd3_data";
return( write( giPipeFd3, pucDataBuff, 20 ) );
}
int testRecv( void )
{
fd_set readFds;
unsigned char pucDataBuff[ 20 ];
struct timeval strTimeOut;
strTimeOut.tv_sec = 5;
strTimeOut.tv_usec = 0;
while( 1 )
{
FD_ZERO( &readFds );
FD_SET( giPipeFd1, &readFds );
FD_SET( giPipeFd2, &readFds );
FD_SET( giPipeFd3, &readFds );
if( select( sizeof( fd_set ), &readFds, NULL, NULL, &strTimeOut ) == 0 )
{
printf( "select return timeover\n" );
}
if( FD_ISSET( giPipeFd1, &readFds ) )
{
if( read( giPipeFd1, pucDataBuff, sizeof( pucDataBuff ) ) == ERROR )
{
printf( "read giPipeFd1 failed\n" );
return( 0 );
}
printf( "Recv data: %s\n", pucDataBuff );
}
if( FD_ISSET( giPipeFd2, &readFds ) )
{
if( read( giPipeFd2, pucDataBuff, sizeof( pucDataBuff ) ) == ERROR )
{
printf( "read giPipeFd1 failed\n" );
return( 0 );
}
printf( "Recv data: %s\n", pucDataBuff );
}
if( FD_ISSET( giPipeFd3, &readFds ) )
{
if( read( giPipeFd3, pucDataBuff, sizeof( pucDataBuff ) ) == ERROR )
{
printf( "read giPipeFd1 failed\n" );
return( 0 );
}
printf( "Recv data: %s\n", pucDataBuff );
}
}
return( 1 );
}
int testDInit( void )
{
if( giTaskId != -1 )
{
if( taskDelete( giTaskId ) == ERROR )
{
printf(" Delete task Error.\n");
}
giTaskId = -1;
}
if( giPipeFd1 != -1 )
{
if( close( giPipeFd1 ) == ERROR )
{
printf( "close giPipeFd1 failed\n" );
}
giPipeFd1 = -1;
}
if( giPipeFd2 != -1 )
{
if( close( giPipeFd2 ) == ERROR )
{
printf( "close giPipeFd2 failed\n" );
}
giPipeFd2 = -1;
}
if( giPipeFd3 != -1 )
{
if( close( giPipeFd3 ) == ERROR )
{
printf( "close giPipeFd3 failed\n" );
}
giPipeFd3 = -1;
}
pipeDevDelete( "/pipe/test1", 1 );
pipeDevDelete( "/pipe/test2", 1 );
pipeDevDelete( "/pipe/test3", 1 );
return( 1 );
}
int testInit( void )
{
if( pipeDevCreate( "/pipe/test1", 10, 20 ) == ERROR )
{
printf( "create pipeDev failed\n" );
testDInit( );
return( 0 );
}
if( pipeDevCreate( "/pipe/test2", 10, 20 ) == ERROR )
{
printf( "create pipeDev failed\n" );
testDInit( );
return( 0 );
}
if( pipeDevCreate( "/pipe/test3", 10, 20 ) == ERROR )
{
printf( "create pipeDev failed\n" );
testDInit( );
return( 0 );
}
if( giPipeFd1 == -1 )
{
if( ( giPipeFd1 = open( "/pipe/test1", O_RDWR, 0 ) ) == ERROR )
{
printf( "open giPipeFd1 failed\n" );
testDInit( );
return( 0 );
}
}
if( giPipeFd2 == -1 )
{
if( ( giPipeFd2 = open( "/pipe/test2", O_RDWR, 0 ) ) == ERROR )
{
printf( "open giPipeFd2 failed\n" );
testDInit( );
return( 0 );
}
}
if( giPipeFd3 == -1 )
{
if( ( giPipeFd3 = open( "/pipe/test3", O_RDWR, 0 ) ) == ERROR )
{
printf( "open giPipeFd3 failed\n" );
testDInit( );
return( 0 );
}
}
if( giTaskId == -1 )
{
if( ( giTaskId = taskSpawn( "taskRecv", 120, 0 , 0x20000 , ( FUNCPTR )testRecv,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ) ) == ERROR )
{
printf( " Ceate task failed\n" );
testDInit( );
return( 0 );
}
}
return( 1 );
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -