博文
用C语言编写Windows服务程序的五个步骤(2006-11-27 12:58:00)
摘要:用C语言编写Windows服务程序的五个步骤
前一段时间我写了一篇通过写服务的形式来达到一些监视程序运行的目的的文章,至于如何在windows下写服务我没有详细介绍,今天就让我们一起看看如何来写服务程序。
Windows 服务被设计用于需要在后台运行的应用程序以及实现没有用户交互的任务。为了学习这种控制台应用程序的基础知识,C(不是C++)是最佳选择。本文将建立并实现一个简单的服务程序,其功能是查询系统中可用物理内存数量,然后将结果写入一个文本文件。最后,你可以用所学知识编写自己的 Windows 服务。
当初我写第一个 NT 服务时,我到 MSDN 上找例子。在那里我找到了一篇 Nigel Thompson 写的文章:“Creating a Simple Win32 Service in C++”,这篇文章附带一个 C++ 例子。虽然这篇文章很好地解释了服务的开发过程,但是,我仍然感觉缺少我需要的重要信息。我想理解通过什么框架,调用什么函数,以及何时调用,但 C++ 在这方面没有让我轻松多少。面向对象的方法固然方便,但由于用类对底层 Win32 函数调用进行了封装,它不利于学习服务程序的基本知识。这就是为什么我觉得 C 更加适合于编写初级服务程序或者实现简单后台任务的服务。在你对服务程序有了充分透彻的理解之后,用 C++ 编写才能游刃有余。当我离开原来的工作岗位,不得不向另一个人转移我的知识的时候,利用我用 C 所写的例子就非常容易解释 NT 服务之所以然。
服务是一个运行在后台并实现勿需用户交互的任务的控制台程序。Windows NT/2000/XP 操作系统提供为服务程序提供专门的支持。人们可以用服务控制面板来配置安装好的服务程序,也就是 Windows 2000/XP 控制面板|管理工具中的“服务”(或在“开始”|“运行”对话框中输入 services.msc /s——译者注)。可以将服务配置成操作系统启动时自动启动,这样你就不必每次再重启系统后还要手动启动服务。
本文将首先解释如何创建一个定期查询可用物理内存并将结果写入某个文本文件的服务。然后指导你完成生成,安装和实现服务的整个过程。......
[C]C实现定时删除文件(2006-11-27 12:57:00)
摘要:[C]C实现定时删除文件
#include "stdio.h"
#include "string.h"
#include "time.h"
#include "stdlib.h"
int main( void )
{
char *strTime;
time_t myTime; // long型时间
bool isDel;
time( &myTime ); // 取得时间
strTime = ctime( &myTime ); // 转换为字符串
printf( "%s", strTime ); // 显示时间
isDel = false;
while( !isDel ) // 程序一直运行,直到删除了文件才结束次程序。
{
/* 如果为18:00点则删除文件 */
if ( ( strTime[11] == '1' ) && ( strTime[12] == '8' ) && ( strTime[14] == '0' ) && ( strTime[15] == '0' ) )
{
system( "type aaa.txt" ); // 显示文件的内容
&......
分享]C语言问题合集 (2006-11-27 12:44:00)
摘要:分享]C语言问题合集
作为C/C++第一个帖子,介绍一下竞赛中的C语言基本知识和C语言库函数使用技巧,文章的最后附有函数速查,如果对于例子不理解可以参考一下这个
也希望大家能够支持DRS,共同让它复活
Part 1:C语言一些基本常识:
===================================================
(一)C语言教材
最著名的教材是〈C Programming Language〉<C程序语言>,但是个人感觉不适合初学者,特别是没接触过编程的同学,而C语言的中国教材都大同小异,我入门用的是潭浩强的〈C程序设计〉在国内也是比较著名的C语言教材.当然也有同学直接学C++,我对C++了解不多,所以不作介绍,等待高人补齐
(二)C/C++语言编译器:
竞赛统一的编译器内核为GCC,IDE根据具体情况,平时训练可以使用DEV-CPP,
DEV-CPP官方网站:
http://www.bloodshed.net/devcpp.html
(三)算法和数据结构相关教材
以C/C++为代码的书我目前只知道一本:
〈数据结构〉//清华大学出版社
(四)一些问题:
(1)竞赛中使用C和C++有区别吗?
个人认为没有区别,C和C++的区别主要在大型应用软件编写上,而在竞赛中面向对象是没用的
(2)C语言比PASCAL的程序效率高吗?
虽然很多人认为C比P的效率高,这是有可能的,因为GCC的编译有比较多的优化,但是这种区别不会很大,所以仅仅因为追求这点效率而转C或许不一定好。
(3)C语言的缺点有哪些?
在竞赛中和Pascal对比,C语言的最大缺点是它的灵活,数组越界不报警,数据强制转换只要允许也都可以执行,这造成了Debug上的一些困难,这对编程者的谨慎要求也更高,不谨慎常常带来意想不到的错误
(4)C语言的优点是什么?
和Pascal相比,C语言的优点还是灵活,灵活的指针运算和位运算,当然位运算在FP出现后也在PASCAL中成为可能,而指针在竞赛中不常用,所以这些优势在竞赛中不一定能够发挥。要说还有什么优势,那就是代码相对简短了(begin 和end变成了{} )。当然这也不是说C比P差,能够好好运用的话,两种......
printf的输出格式 (2006-11-27 12:42:00)
摘要:
printf的输出格式
一直都怎么没有写技术文章,在我看来,写技术文章很有难度,就说那个文章的深度就不好把握,写简单了没什么意思,自己都知道了,都很熟练了还写什么写啊,又不是要出书;要是写深一点,就会发现很多知识其实都是一个无底洞,你越钻,发现需要考虑的问题越多,同其相关的知识也越多。因此,我比较少写技术的文章,本文也不是,只是一点小的总结(不完全,有待添加)。
其实我的学习曲线是从C++开始的,对于C的一些格式不是很了解,在C++里面,这种cout比printf安全也比较好用。不过这次有兴趣整理这个是因为老师上课的要求(非必须的)
#include<cstdio>
int main()
{
//for int
int i=30122121;
long i2=309095024l;
short i3=30;
unsigned i4=2123453;
printf("%d,%o,%x,%X,%ld,%hd,%u\n",i,i,i,i,i2,i3,i4);//如果是:%l,%h,则输不出结果
printf("%d,%ld\n",i,i2);//试验不出%ld和%d之间的差别,因为long是4bytes
printf("%hd,%hd\n\n\n",i,i3);//试验了%hd和%d之间的差别,因为short是2bytes
//for string and char
char ch1='d';
unsigned ch......
位元” 及 “位元组”(2006-11-27 12:41:00)
摘要:你可能听过 “位元” 及 “位元组” 这些名词,这两个名词都是对计算机运作很重要的资讯单位。“位元(bit)” 是 “二进制数字(binary digit)” 的缩写,正如其名,位元代表二进制数目中的一个位数;位元是计算机中所有资讯的最小单位,并可以具有0或1的数值。一个位元组由8个位元所组成,几乎所有计算机的性能都是以位元组来代表的。举例而言,内存容量,资料传输速率以及资料储存容量都是以位元组或是它的倍数(例如千位元组(kilobytes),百万位元组(megabytes)或是十亿位元组(gigabytes))来作为测量单位的。......