test_io.cpp
来自「ACE自适配通信环境(ADAPTIVE Communication Enviro」· C++ 代码 · 共 212 行
CPP
212 行
// test_io.cpp,v 4.19 2005/01/10 16:09:45 jwillemsen Exp// Test program for different methods of copying files.#include "ace/OS_NS_stdio.h"#include "ace/OS_NS_unistd.h"#include "ace/ACE.h"#include "ace/Profile_Timer.h"#include "ace/Get_Opt.h"#include "ace/Signal.h"#include "ace/Log_Msg.h"#include "IO_Test.h"ACE_RCSID(IO_tests, test_io, "test_io.cpp,v 4.19 2005/01/10 16:09:45 jwillemsen Exp")#if !defined(_WIN32)// Name of program.static const ACE_TCHAR *program_name;// Name of default input file.static const ACE_TCHAR *input_filename = ACE_TEXT ("/usr/dict/words");// Name of default output file.static const ACE_TCHAR *output_filename = ACE_TEXT ("/tmp/foo");// Check if removing output file upon completion...static int remove_output = 1;// Count of the number of iterations to run the tests.static int iteration_count = 100;// Profiler used to keep track of file I/O time.static ACE_Profile_Timer profile_timer;// Explain usage and exit.static voidprint_usage_and_die (void){ ACE_OS::fprintf (stderr, "usage: %s" " [-i input_file] [-o output_file] [-n iteration_count] [-r]\n", ACE_TEXT_ALWAYS_CHAR (program_name)); ACE_OS::exit (1);}// Clean up the output file on exit from a signal.extern "C" voidcleanup (int = 0){ if (remove_output) ACE_OS::unlink (output_filename); ACE_OS::exit (0);}// Parse the command-line arguments and set options.static voidparse_args (int argc, ACE_TCHAR *argv[]){ ACE_Get_Opt get_opt (argc, argv, ACE_TEXT ("i:n:o:r")); for (int c; ((c = get_opt ()) != -1); ) switch (c) { case 'i': input_filename = get_opt.opt_arg (); break; case 'n': iteration_count = ACE_OS::atoi (get_opt.opt_arg ()); break; case 'o': output_filename = get_opt.opt_arg (); break; case 'r': remove_output = 0; break; default: print_usage_and_die (); break; }}// Vector of pointers to derived classes that inherit from IO_Test// base class.static IO_Test *test_vector[100];static intrun_tests (int iterations, FILE *input_fp, FILE *output_fp){ int i = 0; ACE_NEW_RETURN (test_vector[i], Stdio_Test ("Stdio_Test", profile_timer), -1); i++; ACE_NEW_RETURN (test_vector[i], Block_Fread_Fwrite_Test ("Block_Fread_Fwrite_Test", profile_timer), -1); i++; ACE_NEW_RETURN (test_vector[i], Block_Read_Write_Test ("Block_Read_Write_Test", profile_timer), -1); i++; ACE_NEW_RETURN (test_vector[i], Mmap1_Test ("Mmap1_Test", profile_timer), -1); i++; ACE_NEW_RETURN (test_vector[i], Mmap2_Test ("Mmap2_Test", profile_timer), -1); i++; ACE_NEW_RETURN (test_vector[i], Slow_Read_Write_Test ("Slow_Read_Write_Test", profile_timer), -1); i++; test_vector[i] = (IO_Test *) 0; for (i = 0; test_vector[i] != 0; i++) { ACE_HANDLE hfile = fileno (output_fp); if (ACE_OS::ftruncate (hfile, 0) == -1) ACE_ERROR_RETURN ((LM_ERROR, ACE_TEXT ("%s\n"), ACE_TEXT ("ftruncate")), -1); ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("--------------------\n") ACE_TEXT ("starting %C for %d iterations(s):\n"), test_vector[i]->name (), iterations)); test_vector[i]->run_test (iterations, input_fp, output_fp); ACE_Profile_Timer::ACE_Elapsed_Time et; profile_timer.elapsed_time (et); ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("wallclock time = %f, user time = %f, system time = %f\n"), et.real_time, et.user_time, et.system_time)); delete test_vector[i]; } ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("--------------------\n"))); return 0;}intmain (int argc, ACE_TCHAR *argv[]){ program_name = ACE::basename (argv[0], ACE_DIRECTORY_SEPARATOR_CHAR); parse_args (argc, argv); ACE_Sig_Action sa ((ACE_SignalHandler) cleanup, SIGINT); ACE_UNUSED_ARG (sa); FILE *input_fp = ACE_OS::fopen (input_filename, ACE_TEXT ("r")); FILE *output_fp = ACE_OS::fopen (output_filename, ACE_TEXT ("w+")); if (input_fp == 0) ACE_ERROR_RETURN ((LM_ERROR, ACE_TEXT ("%p\n"), input_filename), -1); if (output_fp == 0) ACE_ERROR_RETURN ((LM_ERROR, ACE_TEXT ("%p\n"), output_filename), -1); ACE_OS::unlink (output_filename); if (run_tests (iteration_count, input_fp, output_fp) == -1) ACE_ERROR_RETURN ((LM_ERROR, ACE_TEXT ("%p\n"), ACE_TEXT ("run_tests")), -1); if (ACE_OS::fclose (input_fp) == -1 || ACE_OS::fclose (output_fp) == -1) ACE_ERROR_RETURN ((LM_ERROR, ACE_TEXT ("%p\n"), ACE_TEXT ("fclose")), -1); cleanup (); return 0;}#elseint ACE_TMAIN (int, ACE_TCHAR*[]) { // not supported on win32 return 0;}#endif
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?