Unix环境编程
文章平均质量分 72
如小丧
这个作者很懒,什么都没留下…
展开
-
在结构体最后定义一个长度为0的字符数组(技巧)
最近看tty驱动源码,发现了一个以前老板上课时讲过的一个c语言技巧,不是很理解,上网学习了一下,总结如下: 在linux源码里struct tty_buffer { struct tty_buffer *next; char *char_buf_ptr; unsigned char *flag_buf_ptr; int used; int size;转载 2015-07-02 02:19:08 · 3210 阅读 · 0 评论 -
ioctl函数详细说明(网络)
ioctl 函数 本函数影响由fd 参数引用的一个打开的文件。 #includeint ioctl( int fd, int request, .../* void *arg */ );返回0 :成功 -1 :出错 第三个参数总是一个指针,但指针的类型依赖于request 参数。我们可以把和网络相关的请求划分为6 类:套接口操作文件操作接口操作转载 2015-10-06 01:00:45 · 908 阅读 · 0 评论 -
linux exec函数家族
1.exec家族一共有六个函数,分别是:(1)int execl(const char *path, const char *arg, ......);(2)int execle(const char *path, const char *arg, ...... , char * const envp[]);(3)int execv(const char *path, char *co转载 2015-09-29 15:31:30 · 484 阅读 · 0 评论 -
getopt() 与 getopt_long() 详解
getopt被用来解析命令行选项参数。 #include extern char *optarg; //选项的参数指针 extern intoptind, //下一次调用getopt的时,从optind存储的位置处重新开始检查选项。 extern intopterr, //当opterr=0时,get转载 2015-09-27 17:11:13 · 1204 阅读 · 0 评论 -
为什么需要htons(), ntohl(), ntohs(),htons() 函数
为什么需要htons(), ntohl(), ntohs(),htons() 函数: 在C/C++写网络程序的时候,往往会遇到字节的网络顺序和主机顺序的问题。这是就可能用到htons(), ntohl(), ntohs(),htons()这4个函数。网络字节顺序与本地字节顺序之间的转换函数: htonl()--"Host to Network Long"转载 2015-07-22 20:16:24 · 1208 阅读 · 0 评论 -
TCP通信的三次握手和四次撒手的详细流程(顿悟)
TCP(Transmission Control Protocol) 传输控制协议三次握手TCP是主机对主机层的传输控制协议,提供可靠的连接服务,采用三次握手确认建立一个连接:位码即tcp标志位,有6种标示:SYN(synchronous建立联机) ACK(acknowledgement 确认) PSH(push传送) FIN(finish结束) RST(reset重置) URG(ur转载 2015-07-17 10:16:24 · 574 阅读 · 0 评论 -
IO - 同步,异步,阻塞,非阻塞 (亡羊补牢篇)
转自:http://blog.csdn.net/historyasamirror/article/details/5778378当你发现自己最受欢迎的一篇blog其实大错特错时,这绝对不是一件让人愉悦的事。《 IO - 同步,异步,阻塞,非阻塞》是我在开始学习epoll和libevent的时候写的,主要的思路来自于文中的那篇link。写完之后发现很多人都很喜欢,我还是非常开心的,也说明转载 2015-07-16 23:44:31 · 312 阅读 · 0 评论 -
Linux Socket编程(不限Linux)
话虽些许夸张,但是事实也是,现在的网络编程几乎都是用的socket。——有感于实际编程和开源项目研究。转自:http://www.cnblogs.com/skynet/archive/2010/12/12/1903949.html我们深谙信息交流的价值,那网络中进程之间如何通信,如我们每天打开浏览器浏览网页时,浏览器的进程怎么与web服务器通信的?当你用QQ聊天时,QQ进程怎么与服转载 2015-07-17 10:30:28 · 319 阅读 · 0 评论 -
Cache和Buffer的区别
1. Cache:缓存区,是高速缓存,是位于CPU和主内存之间的容量较小但速度很快的存储器,因为CPU的速度远远高于主内存的速度,CPU从内存中读取数据需等待很长的时间,而 Cache保存着CPU刚用过的数据或循环使用的部分数据,这时从Cache中读取数据会更快,减少了CPU等待的时间,提高了系统的性能。 Cache并不是缓存文件的,而是缓存块的(块是I/O读写最小的单元);Cache转载 2015-07-16 23:53:53 · 440 阅读 · 0 评论 -
网络IO模型:同步IO和异步IO,阻塞IO和非阻塞IO
转自:http://blog.chinaunix.net/uid-28458801-id-4464639.html同步(synchronous) IO和异步(asynchronous) IO,阻塞(blocking) IO和非阻塞(non-blocking)IO分别是什么,到底有什么区别?这个问题其实不同的人给出的答案都可能不同,比如wiki,就认为asynchronous IO和non-转载 2015-07-16 23:47:29 · 576 阅读 · 0 评论 -
linux下的系统调用函数到内核函数的追踪
转自:http://blog.chinaunix.net/uid-28458801-id-3468966.html使用的 glibc : glibc-2.17使用的 linux kernel :linux-3.2.07 系统调用是内核向用户进程提供服务的唯一方法,应用程序调用操作系统提供的功能模块(函数)。用户程序通过系统调用从用户态(user mode)切换到转载 2015-07-02 02:16:47 · 741 阅读 · 0 评论 -
linux内核 asmlinkage宏
asmlinkage是个宏,使用它是为了保持参数在stack中。看一下/usr/include/asm/linkage.h里面的定义:#define asmlinkage CPP_ASMLINKAGE __attribute__((regparm(0)))其中 __attribute__是关键字,是gcc的C语言扩展。__attribute__机制是GNU C的一大转载 2015-07-02 10:08:30 · 477 阅读 · 0 评论 -
linux2.6下的GNU C __attribute__ 机制简介
摘要:在学习linux内核代码及一些开源软件的源码(如:DirectFB),经常可以看到有关__attribute__的相关使用。本文结合自己的学习经历,较为详细的介绍了__attribute__相关语法及其使用。GNU C的一大特色(却不被初学者所知)就是__attribute__机制。__attribute__可以设置函数属性(Function Attribute)、变量属性(Va转载 2015-07-02 22:44:00 · 539 阅读 · 0 评论 -
向Linux内核添加系统调用函数
实验环境: 虚拟机VMware 6.0 操作系统Ubuntu9.10(内核版本2.6.31-14-generic) 修改内核版本2.6.31.12 实验步骤: 1.下载Linux内核:在终端中输入命令sudo apt-get install linux-source,下载的文件在/usr/src目录下。(注:如果源没有更新的,在下载之前请先更新源。) 2.将内核代码解压缩:例如下载转载 2015-07-02 02:22:18 · 1264 阅读 · 0 评论 -
Linux中的task_struct和内核栈
在内核2.4中堆栈是这么定义的: union task_union { struct task_struct task; unsigned long stack[INIT_TASK_SIZE/sizeof(long)]; }; 而INIT_TASK_SIZE只能是8K。 内核为每个进程分配一个task_struc转载 2015-07-02 02:00:55 · 1435 阅读 · 0 评论 -
从一道面试题谈linux下fork的运行机制
今天一位朋友去一个不错的外企面试linux开发职位,面试官出了一个如下的题目: 给出如下C程序,在linux下使用gcc编译:1234567891011121314#include "stdio.h"#includ转载 2015-07-02 01:44:39 · 409 阅读 · 0 评论 -
fopen()中w 和w+的区别
测试代码[cpp] view plaincopyprint?#include #include int main() { FILE *fp; fp = fopen("test.txt", "w"); // fp = fopen("testt.txt", "w+"); fprintf(fp, "1This is testing for转载 2015-09-23 12:05:01 · 1581 阅读 · 0 评论