08 2012 档案
摘要:网友1:今天在编写《编程之美》上的代码,遇到了如下的问题: void function(int &array[5]) { //………… } void main() { int arr[5]={1,2,3,4,5}; function(arr); } 为什么不正确呢??求真相~~ 非常感谢网友2:void function(int &array[5])形参的...
阅读全文
摘要:这里面的三个函数openlog, syslog, closelog是一套系统日志写入接口。另外那个vsyslog和syslog功能一样,只是参数格式不同。原理:通常,syslog守护进程读取三种格式的记录消息。此守护进程在启动时读一个配置文件。一般来说,其文件名为/etc/syslog.conf(注释:ifyou want to redirectlogto other place,you need to change this),该文件决定了不同种类的消息应送向何处。例如,紧急消息可被送向系统管理员(若已登录),并在控制台上显示,而警告消息则可记录到一个文件中。该机制提供了syslog函数,其
阅读全文
摘要:当您经常使用某个系统时,往往会陷入某种固定的使用模式。有时,您没有养成以尽可能最好的方式做事的习惯。有时,您的不良习惯甚至会导致出现混乱。纠正此类缺点的最佳方法之一,就是有意识地采用抵制这些坏习惯的好习惯。本文提出了 10 个值得采用的 UNIX 命令行习惯——帮助您克服许多常见使用怪癖,并在该过程中提高命令行工作效率的好习惯。下面列出了这 10 个好习惯,之后对进行了更详细的描述。采用 10 个好习惯要采用的十个好习惯为: 在单个命令中创建目录树。更改路径;不要移动存档。将命令与控制操作符组合使用。谨慎引用变量。使用转义序列来管理较长的输入。在列表中对命令分组。在 find 之外使用 xar
阅读全文
摘要:Linux下建议的命名规则如下。(1)变量名必须有一定的意义,并且意义准确。例如有一个变量用于保存图书的数目,可以命名为number_of_book或者num_of_book。不建议使用i,因为它没有意义。也不建议使用number或book,因为意义不准确。(2)不建议大小写混用。如定义一个计数变量,int nCount;这在Windows中是一个很好的变量名,其中nCount的首字母n用来说明这个变量的类型是int。但在Linux下不建议大小写混合使用,一般标识符只由小写字母,数字和下划线构成。(3)在失去意义的情况下,尽量使用较短的变量名。例如有一个变量,用于暂时存储一个计数值,把变量命名
阅读全文
摘要:前两天在网上看到许多帖子以及一些unix书籍,认为一次fork后产生守护进程足够了,各有道理吧,不过多了一次fork到底是出于什么目的呢?进程也就是task,看看内核里维护进程的数据结构task_struct,这里有两个成员:view plainstructtask_struct{volatilelongstate;intexit_state;...}看看include/linux/sched.h里的value取值:view plain#defineTASK_RUNNING0#defineTASK_INTERRUPTIBLE1#defineTASK_UNINTERRUPTIBLE2#defin
阅读全文
摘要:信号量及信号量上的操作是E.W.Dijkstra 在1965年提出的一种解决同步、互斥问题的较通用的方法,并在很多操作系统中得以实现, Linux改进并实现了这种机制。信号量(semaphore )实际是一个整数,它的值由多个进程进行测试(test)和设置(set)。就每个进程所关心的测试和设置操作而言,这两个操作是不可中断的,或称“原子”操作,即一旦开始直到两个操作全部完成。测试和设置操作的结果是:信号量的当前值和设置值相加,其和或者是正或者为负。根据测试和设置操作的结果,一个进程可能必须睡眠,直到有另一个进程改变信号量的值。信号量可用来实现所谓的“临界区”的互斥使用,临界区指同一时刻只能有
阅读全文
摘要:Linux网络编程入门 (转载) (一)Linux网络编程--网络知识介绍Linux网络编程--网络知识介绍客户端和服务端 网络程序和普通的程序有一个最大的区别是网络程序是由两个部分组成的--客户端和服务器端. 客户端 在网络程序中,如果一个程序主动和外面的程序通信,那么我们把这个程序称为客户端程序。 比如我们使用ftp程序从另外一 个地方获取文件的时候,是我们的ftp程序主动同外面进行通信(获取文件), 所以这个地方我们的ftp程序就是客户端程序。 服务端 和客户端相对应的程序即为服务端程序。被动的等待外面的程序来和自己通讯的程序称为服务端程序。 比如上面的文件获取中,另外一个地方的程序..
阅读全文
摘要:从一个简单的fork()查找自己的不足:int mian(){ pid_t pid1; pid_t pid2; pid1 = fork(); pid2 = fork(); printf("pid1=%d,pid2=%d\n",pid1,pid2);}题目要求:已知从程序执行到这个程序的所有进程结束的时间段内,没有其他任何新进程运行;1.请说出这个进程执行后一共有几个进程?2.如果其中一个进程的输出结果是“pid1=1001,pid2=1002”,写出其它的进程执行结果(不考虑进程的执行顺序)。执行结果: 首先这里一共有四个进程,这是容易想到的;输出结果: pid1=1001
阅读全文
摘要:一.Select 函数详细介绍 Select在Socket编程中还是比较重要的,可是对于初学Socket的人来说都不太爱用Select写程序,他们只是习惯写诸如connect、 accept、recv或recvfrom这样的阻塞程序(所谓阻塞方式block,顾名思义,就是进程或是线程执行到这些函数时必须等待某个事件的发生,如果事件没有发生,进程或线程就被阻塞,函数不能立即返回)。 可是使用Select就可以完成非阻塞(所谓非阻塞方式non-block,就是进程或线程执行此函数时不必非要等待事件的发生,一旦执行肯定返回,以返回值的不同来反映函数的执行情况,如果事件发生则与阻塞方式相同,若事件没.
阅读全文