⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 select_pipe.c

📁 VXWORKS下的SELECT,看门狗
💻 C
字号:
#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;
	struct timeval strTimeOut;
	unsigned char  pucDataBuff[ 20 ];
	
	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 + -