![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
linux高级编程
Bill_heyg
这个作者很懒,什么都没留下…
展开
-
stat,fstat,lstat与struct stat结构的结合使用
此文出自:http://blog.sina.com.cn/s/blog_8216ada70101a9fv.htm感觉比较全,但是有点小瑕疵,我修改了一点lstat,lstat,fstat1 函数都是获取文件(普通文件,目录,管道,socket,字符,块()的属性。函数原型#include int stat(const char *restrict pathname, struct转载 2013-07-17 20:19:56 · 747 阅读 · 0 评论 -
多路复用的server模型
多路复用I/O之server模型 主要是关于select()这个函数:其原型是:int select(int n,fd_set *read_fds,fd_set *write_fds,fd_set *except,struct timeval *timeout);功能是:监测指定集合中指定文件描述符的指定事件是否发生;参数一:读集合,监测登记文件描述的读事件;原创 2013-07-31 15:55:17 · 718 阅读 · 0 评论 -
共享内存(初步了解)
共享内存共享内存:是一种高效的进程通信方式,进程可以直接读写内存,而不需要任何数据拷贝(有名管道)上面这个图,可以分两步看:第一步:创建共享内存第二步:建立共享内存的映射关系下面我是实例来说明(由于水平有限,说错了见谅):创建共享内存:用到int shmget(key_t key,int size,int shmflg);这个api,其具体信息可以查看m原创 2013-07-25 16:23:46 · 645 阅读 · 0 评论 -
线程之1
线程(初步了解)线程:有自己的pcb(结构体,由于存放当前线程的状态的),其公用一个进程的的地址空间优点:方便多个线程间通信(通过全局变量实现数据共享和交换)缺点:由于很方便多线程的通信,因而,在多线程访问共享对象时,通信的“安全问题”需要引入同步和互斥的机制下面的的api主要是对于线程而言的,没有设计同步和互斥的机制:Int pthread_create(pth原创 2013-07-25 16:25:28 · 646 阅读 · 0 评论 -
信号量---解决进程间的同步与互斥问题之1
信号量(初步了解)信号量:主要用于解决同步于互斥的问题主要的api:Int semget(key_t,key,int nsems,int semflg); 主要用于创建信号,第一个参数:和信号灯(该值是一个你要用到的信号)关联的值;第二个参数:要创建信号的数目;第三个参数:访问权限,一般是:IPC_CREAT | 0666 ;该函数的返回值是一个信号灯集的idInt se原创 2013-07-25 16:27:01 · 1267 阅读 · 0 评论 -
I/O多路复用之select()简要总结分析一(错误之处请指出)
多路复用i/o和套接字简要总结一原创 2013-10-03 18:16:46 · 1074 阅读 · 0 评论 -
setsockopt设置端口复用的作用(bind绑定失败)
本文转自:http://www.2cto.com/kf/201208/150347.html写Socket程序的时候经常会遇到这个问题:如果自己的程序不小心崩溃了,重新启动程序的时候往往会在bind调用上失败,错误原因为Address Already In Use,往往要等待两分钟才能再次绑定。但是在很多的程序(比如nginx)中好像并不存在这个问题,就算被KILL了也能立刻重启。这个区别还是转载 2013-10-04 22:18:01 · 4991 阅读 · 1 评论 -
I/O多路复用之poll
I/O多路复用之poll函数原型:int poll(struct pollfd *fderray, unsigned long nfds, int timeout);参数一:是指向一个结构数组struct pollfd { int fd; /* descriptor to check*/ short evevts; /*events of interest on fd*/原创 2013-10-05 18:26:23 · 694 阅读 · 0 评论 -
阻塞与非阻塞、select关于深入网络编程
非阻塞与阻塞答疑:http://www.2cto.com/kf/201208/150347.htmlselect答疑:http://www.cnblogs.com/NeuqUstcIim/archive/2008/08/14/1268023.html原创 2013-10-05 18:30:19 · 705 阅读 · 0 评论 -
linux下sqlite3的安装、sql语句学习、c代码编程
第一步:需要编译相应的库和原创 2014-07-20 00:41:32 · 2047 阅读 · 0 评论 -
tcp并发服务器之线程
关于进程和线程的知识,请看我相关的简单博文,不足之处,请之处,相互学习////tcp并发服务器之线程1 #include 2 #include 3 #include 4 #include 5 #include 6 7 #include /* See NOTES */ 8 #include 9 #include原创 2013-07-31 15:23:53 · 826 阅读 · 0 评论 -
tcp协议的简单服务器---源码
下面代码是tcp协议的服务器端代码:该源码主要用了:socket()-------创建套套接字(支持tcp协议的)bind()---------绑定套接字和本机网卡ip信息accept()--------等待连接(等待客户端发来请求信息),并返回可以对可读写的套接字(同文件描速符,一样操作)recv()--------通过得到的可读写的套接字然后接收客户端发原创 2013-07-31 14:59:37 · 782 阅读 · 0 评论 -
多路复用之poll
//////下面是用到poll()---其原型是:int poll(struct pllfd *fds,unsigned int nfds,int timeout);该函数的功能类似select;参数一:是一个结构体指针,这里可以用结构体数组;该结构体包含了文件描述符,对应的事件,发生了就返回其事件参数二:第一个参数结构体成员的个数参数三:超时时间(以毫秒为单位)原创 2013-07-31 16:09:14 · 619 阅读 · 0 评论 -
实现linux下ls -l的c源码
转载请注明出处:珍惜他人成果下面是关于linux下文件的属性源码(自己写的,仅供参考):1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9 #include 10 #include 11 #include原创 2013-07-17 20:07:28 · 987 阅读 · 0 评论 -
标准I/O
缓存分类一.全缓存 定义:在写在文件数据时,如果没有达到系统默认的满缓存,那么,程序要在执行完成后,自动刷新缓存,以将还没被写到的数据写入指定的文件,这个缓存方式成为全缓存注意:对于全缓存需要注意几个问题:如下例子: 3 int main(int argc,char *argv[]){ 4 FILE *fp; 5 time_原创 2013-07-17 20:23:13 · 577 阅读 · 0 评论 -
文件I/O函数解析
标准i/o的常用apti解析:文件流:FILE *fopen(const char *path,const char *mode)第一个参数:是全路径,即你需要打开的文件的路径;第二个参数是打开方式,诸如"r","w","a"等多种打开方式,自己可以查一下;该函数是将文件流和文件相关联的的函数,也是对文件操作的第一步(当然还有其他api也可以实现相等的功能)。F原创 2013-07-17 20:25:44 · 740 阅读 · 0 评论 -
文件I/O
文件IO打开文件系统函数:open()其在头文件#include,#include,#includeint open(const char *pathname,int flags);第一个参数表示全路径,第二个参数表示打开的方式(O_RDONLY--只读,O_WRONLY--可写方式,O_RDWR---读写方式打开文件,还有其他方式,可以自己查看一下)int ope原创 2013-07-17 20:03:07 · 623 阅读 · 0 评论 -
进程调度主要函数解析
进程系统调用函数fork();其原型pid_t fork(void);其在头文件#include,#include这个函数的返回值:如果是出错返回-1;如果是成功的话返回两次,对于父进程返回子进程的进程号,对于子进程返回0;对于fork()这个函数,我这里要简要的分析一下:注意下面的言语是我自己理解的仅供参考:fork()解析:分析一:首先如果在原创 2013-07-19 19:31:18 · 1325 阅读 · 0 评论 -
静态库和动态库详解(部分参考别人)
静态库和动态库的区别1. 静态函数库 这类库的名字一般是libxxx.a;利用静态函数库编译成的文件比较大,因为整个 函数库的所有数据都会被整合进目标代码中,他的优点就显而易见了,即编译后的执行程序不需要外部的函数库支持,因为所有使用的函数都已经被编译进去了。当然这也会成为他的缺点,因为如果静态函数库改变了,那么你的程序必须重新编译。2. 动态函数库 这类库的名字一般是原创 2013-07-19 19:33:20 · 920 阅读 · 0 评论 -
信号
查看linux下有多少个信号:kill -l具体信号的用法自己产看man手册这里就不详细描述了这里主要我介绍几个函数:typedef void (*sighandler_t)(int);sighandler_t signal(int signum, sighandler_t handler); //该函数的第二个参数是一个函数名(这里是一个有一个整形参数的函数指针)该函数式原创 2013-07-23 20:49:52 · 601 阅读 · 0 评论 -
TCP/IP和UDP协议的简单阐述
TCP/IP协议的体系结构TCP/IP与OSI对应关系应用层 《==========》应用层,表示层,会话层 《====》面向应用,面向服务(应用程序,数据格式定义以及加密)(ftp)传输层 《===========》 传输层 《====.》差错处理/恢复,流量控制,提供可靠的数据传输(tcp与udp)网络层 《============》网络层 《=====原创 2013-07-31 15:02:33 · 746 阅读 · 0 评论 -
TCP并发服务器之进程
TCP并发服务器源码(之进程)1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9 #include 10 #include 11 #include 12 13 #define PO原创 2013-07-31 15:19:20 · 684 阅读 · 0 评论 -
UDP简单服务器
UDP简单服务器与客户端:这里用到了recvfrom()----表示接受来自何处的连接请求信息sendto()-------要向何处发送下面这段代码是服务器源码:下面主要用到:socket()------创建UDP协议的套接字bind()-------绑定本机三元信息recvfrom()-----接收客户端向本机服务器发送来得信息;原创 2013-07-31 15:14:28 · 1013 阅读 · 0 评论