#include "queue.hpp" #define MAX_PMT 7 #define MAX_BUF 100 class que_s : public queue { public: void do_cmd( const char* cmd, const char* inf ){} }; void help( void ) { printf( "quit\n" ); printf( "exit\n" ); printf( "help\n" ); } int main( void ) { int ret; char pmt_cmd[MAX_PMT]; char pmt_inf[MAX_PMT]; memset( pmt_cmd, 0, MAX_PMT ); memset( pmt_inf, 0, MAX_PMT ); snprintf( pmt_cmd, MAX_PMT, "cmd > " ); snprintf( pmt_inf, MAX_PMT, "inf > " ); char cmdbuf[MAX_BUF]; char infbuf[MAX_BUF]; que_s que_snd; que_snd.set_mode_send(); que_snd.set_filename( "./test" ); que_snd.open(); while(1) { memset( cmdbuf, 0, MAX_BUF ); memset( infbuf, 0, MAX_BUF ); // cmd input write( 1, pmt_cmd, MAX_PMT ); fsync(1); ret = read( 0, cmdbuf, MAX_BUF ); if( -1 == ret ) { printf( "cmd read error\n" ); return -1; } for( int i = 0; i < MAX_BUF; i++ ) { if( cmdbuf[i] <= 0x1f ) cmdbuf[i] = 0; } if( strcmp( "exit", cmdbuf ) == 0 ) break; if( strcmp( "quit", cmdbuf ) == 0 ) break; if( strcmp( "help", cmdbuf ) == 0 ) { help(); continue; } // inf input write( 1, pmt_inf, MAX_PMT ); fsync(1); ret = read( 0, infbuf, MAX_BUF ); if( -1 == ret ) { printf( "inf read error\n" ); return -1; } for( int i = 0; i < MAX_BUF; i++ ) { if( infbuf[i] <= 0x1f ) infbuf[i] = 0; } printf( "----> " ); printf( "cmd = {%s}, ", cmdbuf ); printf( "inf = {%s}\n", infbuf ); que_snd.send( cmdbuf, infbuf ); } que_snd.close(); return 1; }