Category Archives

12 Articles

关于Linux Shell的信号trap功能你必须知道的细节

信号处理(Signal Handling)在 Linux 编程中一直扮演者重要的角色,几乎每个系统工具都要用到它,最常见的功能莫过于用信号进行进程间通信(尤其是父子进程)以及捕捉SIGINT、SIGTERM之类的退出信号以做一些善后处理(cleanup)。C中自不必多说,可以使用 wait 族函数;而 shell 脚本中也有捕捉信号的 trap 功能——然而许多人在使用 trap 功能的时候却存在着这样那样的误解,这些看似无关紧要的小细节最后有可能使得你的脚本与你预想的行为完全不同。

Read More

C++整数I/O测试

测试目的:在LINUX下以OI/ACM竞赛为目的测试C++的两种输入输出的速度区别。

测试数据:test.in文件随机生成的5000000个不超过5000000的非负整数,一行,以单个空格隔开,末尾有一个回车符(行末行首无多余空格),一一读入并输出至test.out文件。

测试代码:
1. test_cstream.cpp 使用iostream和cstdio库,freopen重定向标准输入输出,使用流cin/cout。
2. test_fstream.cpp 使用iostream和fstream库,建立 类ifstream和ofstream的 对象fin和fout,使用构造函数指向文件,使用流fin/fout。
3. test_cstdio1.cpp 使用cstdio库,freopen重定向标准输入输出,使用函数scanf/printf。
4. test_cstdio2.cpp 使用cstdio库,定义两个FILE指针fin/fout,使用函数fscanf/fprintf。
5. test_pascal.pas PASCAL程序,用以比对;使用assign(‘ ‘, input/output),使用过程read/write。
Read More