📄 select_pipe.c.bak
字号:
#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 );
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -