`
envy2002
  • 浏览: 149351 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论
文章列表
extern 的作用是起到一个链接作用!       1.简单的例子。        //包含头文件是为了声明这个函数,表示这个函数已经被定义过了,已经生产过二进制代码了。 #include <stdio.h> int main(int argc, char **argv) { printf("h ...
       在多线程编程中,我们用gcc -Wall -g -lpthread log.h log.c List.c List.h server.c -o server.exe编译的时候,我们会加上一个-lpthread,表示要用到gcc默认路径之外的库,但是这个库文件在哪里呢?我们可以用ldd命令来看。   比如 bard@bard-desktop:~/sharing$ ldd server.exe linux-gate.so.1 => (0x001f7000) libpthread.so.0 => /lib/tls/i686/cmov/libpthread.so ...
  C语言编译全过程     编译的概念:编译程序读取源程序(字符流),对之进行词法和语法的分析,将高级语言指令转换为功能等效的汇编代码,再由汇编程序转换为机器语言,并且按照操作系统对可执行文件格式的 ...
 一、为什么要使用库文件   我们在实际编程工作中肯定会遇到这种情况:有几个项目里有一些函数模块的功能相同,   实现代码也相同,也是我们所说的重复代码。比如,很多项目里都有一个用户验证的功能。    ...
      把上个版本一对一的聊天室,修改了一下,使其能进行一(server)对多(client)的聊天。 直接上源码:     /* provide the function to log. input: environment varibles, (1) LEVEL=DEBUG||WARNING||ERROE (2)LOGPATH(the log file saving path) output: different level log file */ #ifndef _LOG_H_ #define _LOG_H_ #include <stdl ...
  http://dsec.pku.edu.cn/~yuhj/wiki/gdb.html 这个网站介绍得极好!   用GDB调试程序 GDB是一个强大的命令行调试工具。大家知道命令行的强大就是在于,其可以形成执行序列,形成脚本。UNIX下的软件全是命令行的,这给程序开发提代 ...
不知不觉,在公司工作两年半以上了。在公司接触的项目非常广泛,所以接触了很多东西,拓宽了我的知识面。但是这个面必须加以控制。由于平时主要是涉及web开发,所以Java web开发技术必须过硬。但是现在IT产业变化很快,移动互联网发展及其迅猛。很多开发都是基于大公司的框架来进行,例如symbian, andrion, 苹果的SDk,等等。但是基础的操作系统的东西是不会变化的,这其中linux是开源的,所以想深入学习linux下面C语言的开发。这样不仅能加强底层的了解,还能了解一些函数式编程的思想。至于架站的工具包,更好丰富多彩,所以决定要把linux下面的东西学透。
实在不好意思,第一个版本有些问题,是局部变量和堆里面变量的区别。今天做了一下修改。代码如下。 #ifndef _LIST_H_ #define _LIST_H_ #include <string.h> #include <stdio.h> #include <stdlib.h> struct List { char * buffer; char * cursor; char * begin; char * end; }; // you must add struct, otherwise it will pro ...
linux 线程同步机制和java的是极其类似的。如果不太明白java多线程编程,可以参考我原先写的java多线程编程。下面我们将展现linux下如何实现生产者和消费者模型。   直接上代码吧:  #ifndef _LIST_H_ #define _LIST_H_ #include <string.h> #include <stdio.h> struct List { char buffer[10]; char * cursor; char * begin; char * end; }; // you must add str ...
下面我们将上面两个线程进行同步。   #include <pthread.h> #include <stdio.h> #include <unistd.h> //初始化一个mutex(互斥体). pthread_mutex_t counter_mutex = PTHREAD_MUTEX_INITIALIZER; //define the first thread procedue. void * thread_1_pro(void ...
如果了解java多线程编程的话,照葫芦画瓢,是很容易理解linux下面的线程模型的。   #include <pthread.h> #include <stdio.h> #include <unistd.h> //define the first thread procedure. void * thread_1_pro(void * arg) { //derive current thread's id pthread_t tid; tid=pthread_self(); printf(" AAAAA th ...
项目中有这样一个需求。前端html页面是用UTF-8编码的,数据库也是用UTF-8编码的。字符集均为unicode。数据库中的限制一般通常如下:   director varchar2 100 导演 scriptwriter varchar2 100 编剧 compere varchar2 100 节目主持人 guest varchar2 ...
     在Java里面进行socket编程是很容易的事情,为了更好地搞清楚socket运行机制,有必要了解一下linux下socket是如何运行的。由于涉及到底层的东西比较多,即使你本来很了解如何运用这些API,但究其下面层次的原理,如果不深入到源码的话,也是比较难以理解的。我本人理解的也不是很好,只能抛砖引玉了。         大概的流程如图所示:   1.服务器建立一个socket监听本机的某个端口(图中socket1)           2.客户机建立一个socket去连接服务器监听端口(如图中socketA)           3.服务器accept一个新的s ...
今天使用clearcase merge的时候差点崩溃了,崩溃的原因最后再提,直接上正确的方法。   1. 找到merge的target。下图的目标点是wacos_common. 目标view为   #merge view element * CHECKEDOUT element * .../wacos_common/LATEST element * /main/LATEST -mkbranch wacos_common   对应的开发view是(源,源要往目标上merge)   #dev_view element * CHECKEDOUT element * .. ...
于渊的《自己动手写操作系统》告诉我们如何自己写一个操作系统,当然写操作系统是个很难的事情,所以我们要慢慢来,先看看如何展示在裸机上写一个最小最小的“操作系统”,也许根本称不上操作系统。   操作系统的初 ...
Global site tag (gtag.js) - Google Analytics