摘要: 在send()发送数据的时候出现下面这个错误send() error.: Socket operation on non-socket已导致不能发送错误,虽然这个错误时出现在send()调用,但是其错误源头在accept()调用,我调试时,打印了accept()返回值居然是0,mygod……原因:在accept()调用的时候出现了。运算符优先级错误。汗……一个低级错误,郁闷了我昨天一个下午。原函数错误写法是:if(connectfd = accept(listenfd,(struct sockaddr*)&client,&sin_size)==-1){ perror(" 阅读全文
posted @ 2011-09-19 14:54 auleaf 阅读(8308) 评论(0) 推荐(1) 编辑
摘要: 本文出自:http://www.china-pub.com作者:姚继锋(2001-08-1109:05:00)1引言 线程(thread)技术早在60年代就被提出,但真正应用多线程到操作系统中去,是在80年代中期,solaris是这方面的佼佼者。传统的Unix也支持线程的概念,但是在一个进程(process)中只允许有一个线程,这样多线程就意味着多进程。现在,多线程技术已经被许多操作系统所支持,包括Windows/NT,当然,也包括Linux。 为什么有了进程的概念后,还要再引入线程呢?使用多线程到底有哪些好处?什么的系统应该选用多线程?我们首先必须回答这些问题。 使用多线程的理由之一是... 阅读全文
posted @ 2011-09-19 14:51 auleaf 阅读(4174) 评论(0) 推荐(0) 编辑
摘要: int quickOnce(int * data, int left, int right){int tmp;tmp = data[left];while(left<right){//右边找个小于tmp的数放到左边while(left<right){if(data[right] < tmp){data[left] = data[right];break;}right--;}//左边找个大于tmp的数放到右边while(left<right){if(data[left] > tmp){data[right] = data[left];break;}left++;}} 阅读全文
posted @ 2011-09-19 09:45 auleaf 阅读(171) 评论(0) 推荐(0) 编辑
摘要: 静态变量的类型说明符是static。 静态变量当然是属于静态存储方式,但是属于静态存储方式的量不一定就是静态变量,例如外部变量虽属于静态存储方式,但不一定是静态变量,必须由 static加以定义后才能成为静态外部变量,或称静态全局变量。对于自动变量,它属于动态存储方式。 但是也可以用static定义它为静态自动变量,或称静态局部变量,从而成为静态存储方式。由此看来,一个变量可由static进行再说明,并改变其原有的存储方式。静态局部变量定义: 在局部变量的说明前再加上static说明符就构成静态局部变量。 例如: static int a,b; static float array[5]... 阅读全文
posted @ 2011-09-19 09:43 auleaf 阅读(821) 评论(0) 推荐(1) 编辑
摘要: 1。函数的形参列于函数声明中,在函数定义的函数体内使用。当函数调用时,形参(任何种类的)是一类将被填充的空白或是占位符。 2。实参是用来填充形参的。当函数被调用时,实参列在函数名后面的括号里。执行函数调用时,实参被传递给形参。 3。传值调用和引用调用指的是用于参数传递过程中的一种机制。传值调用中,只使用了实参的值。传值调用机制里,形参是一个局部变量,其初始值为相应实参的值。在引用调用机制里,以实参变量取代形参,因此任何发生在形参上的改变实际上都发生在实参变量上 阅读全文
posted @ 2011-09-19 09:38 auleaf 阅读(2134) 评论(0) 推荐(0) 编辑
摘要: C和C++是两件截然不同的东西,学习C++可以完全没有C的基础,或者说可以完全不用先学C;但是,这样你是永远也不可能成为真正的C++大师的;你最多只能成为一个C++的熟练工人;C和C++有一个共同的奥义:内存管理,而你不学习C,单从对C++的理解是不可能掌握这项最伟大的技术的; C++是面向对象的,C不是,它的特点是结构化程序设计思想,或者说是面向过程的;而C++在语法上以C的语法为基础,兼容C的语法,这让它看上去有点凌乱;甚至C的程序不需要任何改动就可以用C++的编译器编译;对于已经掌握C语法的人,学习C++比学习其它语言(如Delphi)要觉得容易些;而对于资深的C程序大师,那么学习C++ 阅读全文
posted @ 2011-09-19 09:37 auleaf 阅读(1855) 评论(0) 推荐(0) 编辑
摘要: #include<stdio.h>voidmain(){inti;for(i=0,printf("first=%d\n",i);i<10,printf("second=%d\n",i);i++,printf("third=%d\n",i)){printf("forth=%d\n",i);}}这段代码会无限循环下去,因为中间的条件是个逗号表达式,逗号表达式的值是最后一个表达式的值。c语言提供一种特殊的运算符,逗号运算符,优先级别最低,它将两式联接起来,如:(3+5,6+8)称为逗号表达式,其求解过程 阅读全文
posted @ 2011-09-19 09:32 auleaf 阅读(1504) 评论(0) 推荐(0) 编辑
摘要: 1. pipe系统调用的使用格式#include<unistd.h>int pipe(int fd[2])功能:创建一个简单的管道,若成功则为数组fd分配两个文件描述符,其中fd[0]用于读取管道,fdp[1]用于写入管道。返回值:成功返回0,失败返回-1。2. 命名管道:mkfifo系统调用的使用格式:#include<sys/types.h>#include<sys/stat.h>功能:创建命名管道返回:若成功则为0,若出错则为-1.3.信号量:semget()系统调用的使用格式:#include<sys/sem.h>功能:创建一个新的信号量 阅读全文
posted @ 2011-09-19 09:29 auleaf 阅读(599) 评论(0) 推荐(0) 编辑
摘要: 并行性包含同时性和并发性,前者是指两个或多个事件在同一时刻发生,后者是指两个或多个事件在同一时间段内发生。 计算机操作系统中把并行性和并发性明显区分开,主要是从微观的角度来说的,具体是指进程的并行性(多处理机的情况下,多个进程同时运行)和并发性(单处理机的情况下,多个进程在同一时间间隔运行的)。 计算机组成原理主要是从宏观的角度来看的,并发性在用户看来也是并行的,故并行性包含了并发性的。主要是看问题的角度和层面不同的。 阅读全文
posted @ 2011-09-19 09:22 auleaf 阅读(5750) 评论(0) 推荐(1) 编辑
摘要: 1 进程是系统中程序执行和资源分配的基本单位。每个进程有自己的数据段,代码段和堆栈段。 线程通常叫做轻型的进程。线程是在共享内存空间中并发执行的多道执行路径, 它们共享一个进程的资源。 2 同一个进程中的线程的共性:多个线程将共享同一个进程虚拟空间。 线程共享的环境包括:进程代码段,进程的公有数据(利用这些共享的数据,线程很容易实现相互之间的通讯),进程打开的文件描述符,信号的处理器,进程的当前目录和进程用户ID与进程组ID。 3 线程的个性: 线程ID:每个线程都有自己的线程ID,这个ID在本进程中是唯一的。 寄存器组的值:一个线程切换到另一个线程上时,必须将原有的线程的寄存器集合的状态保存 阅读全文
posted @ 2011-09-19 09:20 auleaf 阅读(173) 评论(0) 推荐(0) 编辑