黑铁时代
Programing is not only one kind of technology, but also one kind of art.
摘要: 1. 进程号: 每个进程在被初始化的时候,系统都会为其分配一个唯一标识的进程id,称为进程号; 进程号的类型为pid_t,通过getpid()和getppid()可以获取当前进程号和当前进程的父进程的进程号; 2. 进程复制: fork函数,是以父进程为蓝本复制一个新的子进程,包括复制代码段,数据段 阅读全文
posted @ 2016-12-15 23:04 黑铁时代 阅读(488) 评论(0) 推荐(0) 编辑
摘要: 应用程序:可以被操作系统执行的一组指令和参数的集合,是静态的,并存储在磁盘空间中; 进程:在操作系统中在运行程序后,处于运行状态的程序,是应用程序的一个执行过程,同时也是操作系统分配内存,cpu等系统资源的基本单位; 线程:进程中可以共享进程资源的一个执行单位; 一个应用程序可以对应多个进程,一个进 阅读全文
posted @ 2016-12-12 22:15 黑铁时代 阅读(1019) 评论(0) 推荐(0) 编辑
摘要: linux的文件系统是一个广义的文件系统,可以认为linux系统对任何设备和对象的操作都是等价于对文件的操作。 linux系统对所有可操作对象进行了高度的抽象,将其归纳为这么几类: 1. 普通文件:就是狭义概念上的存储在磁盘中的文件,是纯粹的存储数据的文件,例如文本文件,图片文件,可执行文件等; 2 阅读全文
posted @ 2016-11-10 22:05 黑铁时代 阅读(471) 评论(0) 推荐(0) 编辑
摘要: 要调试生成的可执行程序,必须在生成的时候加入-g选项,生成可以调试的代码 例如:gcc -o test a.c b.c -g 这样gcc就会在链接的时候加入一些用于调试的符号 在生成可以调试的可执行程序后,使用gdb命令进入调试模式 此时,程序并没有开始运行,在运行程序之前,可以做一些准备工作 1. 阅读全文
posted @ 2016-10-26 21:56 黑铁时代 阅读(1927) 评论(0) 推荐(0) 编辑
摘要: 一个项目中有太多文件需要编译,如果只用gcc进行手动编译,几乎是不可能的。 因此,出现了makefile来完成这个任务,makefile文件定义了一些规则,当执行makefile中定义的动作时,make命令会根据定义的规则对多个文件进行编译,从而达到编译,链接和生成可执行文件的目的。 1. make 阅读全文
posted @ 2016-10-19 21:52 黑铁时代 阅读(1701) 评论(0) 推荐(1) 编辑
摘要: 1. 编译单个文件成可执行文件 2. 编译单个文件为指定名字的可执行文件,使用-o选项指定文件名字 3. 编译单个源文件成目标文件 (1)使用-c选项生成目标文件 (2)使用-o选项指定目标文件名字 4. 同时编译多个源文件成目标文件 使用-c选项生成目标文件 5. 将多个源文件编译成一个可执行文件 阅读全文
posted @ 2016-10-10 22:20 黑铁时代 阅读(809) 评论(0) 推荐(0) 编辑
摘要: 1. 基础socket库 socket.h: socket.cpp 2. 多线程的模型: 在accept成功之后,为每个通信socket创建新的进程和线程,单独用于处理服务器和客户端的通信。但是系统都会有创建进程数量的限制,在linux下,创建的线程也叫轻量级进程,所以即时创建的是线程也会受到系统的 阅读全文
posted @ 2016-08-11 10:37 黑铁时代 阅读(839) 评论(0) 推荐(0) 编辑
摘要: 1. 创建线程 int pthread_create (pthread_t* thread, pthread_attr_t* attr, void* (*start_routine)(void*), void* arg); thread:线程句柄,用于标示一个线程; attr(线程属性结构): 1. 阅读全文
posted @ 2016-07-14 13:44 黑铁时代 阅读(844) 评论(0) 推荐(0) 编辑
摘要: 真正的多线程是具有抢占式和内存共享两个特点,这也是导致多线程同步问题的根本原因。而lua中的线程并不存在这个问题,首先lua的线程的状态并不共享内存,其次lua的线程是协同工作的,并非抢占式的。 主线程:lua_State* L = luaL_newstate() 不仅创建了一个lua状态,还创建了 阅读全文
posted @ 2016-07-12 18:41 黑铁时代 阅读(461) 评论(0) 推荐(0) 编辑
摘要: userdata: userdata机制可以让我们在lua中使用c中的自定义数据类型。userdata表示一块动态分配的内存,这块内存就存储的自定义类型的数据,在lua脚本中使用userdata,并配合c提供的函数,就可以操作userdata了。 定义一个player类型: 定义player的所有操 阅读全文
posted @ 2016-07-12 17:02 黑铁时代 阅读(1129) 评论(0) 推荐(0) 编辑