![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Linux编程
文章平均质量分 70
lwoyvye
这个作者很懒,什么都没留下…
展开
-
linux-Tcp IP协议栈源码阅读笔记
本文转自:http://blog.csdn.net/cz_hyf/article/details/602802sockettcpstreamstruct网络数据结构 一.linux内核网络栈代码的准备知识 1. linux内核ipv4网络部分分层结构: BSD socket层: 这一部分处理BSD socket相关操作,每个socket在内核转载 2015-08-11 16:07:22 · 838 阅读 · 0 评论 -
追踪系统调用流程
前言 我不是专业的内核研读者,只因自己的好奇心,想一探(IO多路复用)select系统调用的实现原理,于是一路追踪到其内核的底层调用。特此记录这一段学习过程。本机系统:ubuntu15.04 内核版本:3.19.0-29-genericsys_select 哪去了? 当用户态使用系统调用的时候,操作系统会根据该函数的系统调用号找到其对应的底层函数(前缀 sys_ )去执行。比如当用户调用下原创 2015-12-16 20:47:02 · 1309 阅读 · 0 评论 -
Linux异步IO+实例(POSIX IO与 libaio)
异步IO基本API API函数 说明 aio_read 异步读操作 aio_write 异步写操作 aio_error 检查异步请求的状态 aio_return 获得异步请求完成时的返回值 aio_suspend 挂起调用进程,直到一个或多个异步请求已完成 aio_cancel 取消异步请求 lio_list 发起一系列异步I/O请求上原创 2015-12-14 20:55:01 · 6455 阅读 · 0 评论 -
GDB调试多线程及死锁
参考文章:http://www.cnblogs.com/zhuyp1015/p/3618863.html我在这里总结一下:查看正在执行的所有线程 info threads切换到指定线程 thread ID //这里的ID是info threads后各线程前面的序号 break thread_test.c:123 thread all //在所有线程中相应的行上设置断点原创 2016-03-10 17:47:32 · 2027 阅读 · 0 评论 -
初识protobuf
这里(IBM)给出了protobuf的基本介绍和原理http://www.ibm.com/developerworks/cn/linux/l-cn-gpb/安装 开始按照上面IBM给出的文档安装了protobuf3.0版本,但是装完后生成的 .pb.cc 和 .pb.h 代码无法编译链接。不知道是静态链接库的问题还是源码包的问题。于是按照下面这篇博客成功安装了 protobuf2.6.1 。h原创 2016-02-22 13:04:41 · 1026 阅读 · 2 评论 -
LinuxC多线程求和
我们要实现的是,使用多线程来计算 1 ~ n 范围的所有整数和。计算运行时间 因为要将普通求和程序与多线程作比较,所以先介绍一下如何计算程序运行的时间。获取时间函数:#include<sys/time.h>int gettimeofday(struct timeval*tv, struct timezone *tz);参数: 其参数tv是保存获取时间结果的结构体,参数tz用于保存时区结果。tz原创 2015-12-03 23:37:42 · 5220 阅读 · 1 评论 -
Linux用户管理
useradd新建用户test (不创建主目录) sudo useradd test新建用户test (并创建主目录等信息) sudo useradd -m -s /bin/bash test查看/etc/passwd查看/etc/shadow设置用户密码再看/etc/shadow新建用户(一次性配好所有环境) sudo adduser test删除用户 sudo userd原创 2015-12-03 15:18:58 · 867 阅读 · 0 评论 -
父子进程ID和进程收养问题(init与upstart)
本文链接:http://blog.csdn.net/lyh__521/article/details/50148025孙子进程的父进程是谁?为了方便描述,这里将子进程中创建的子进程称为孙子进程。测试代码:/* * getpid() 获取当前进程PID * getppid() 获取父进程的PID */#include<stdio.h>#include<stdlib.h>main(){原创 2015-12-02 14:39:03 · 2773 阅读 · 1 评论 -
测试栈空间的大小
比如局部变量是保存在栈空间中的,今天突然在想栈的上限是多大呢,什么时候才会栈溢出?ulimit 命令linux下使用ulimit 命令可以查看系统的很多上限值。ulimit -a 查看所有ulimit -s 查看栈空间的大小可以看到系统设置栈的上限是8M测试现在我们写个程序测试一下两种方法:1、第一种方法:最简单的是在函数或直接在main()函数里定义多个局部变量。局部变量一定要初始化,原创 2015-11-30 17:22:11 · 11242 阅读 · 0 评论 -
进程间通信ipcs、ipcrm命令
创建了消息队列后,如果没有主动删除,或者程序不正常退出,那么消息队列会滞留在内核中,不断累加白白占用资源,直到操作系统重启。于是查询了,ipcs 和 ipcrm 命令,同时了解了其他用法。ipcs 命令查看消息队列、共享内存、信号量的相关信息。用法:ipcs -a (默认)输出全部信息,消息队列、共享内存段和信号量ipcs -m 只输出共享内存段信息ipcs -s 只输出信号量信息原创 2015-11-29 17:00:21 · 1113 阅读 · 0 评论 -
Linux信号介绍
原文链接:http://blog.csdn.net/lyh__521/article/details/49646927 信号(signal)是一种软件中断,它提供了一种处理异步事件的方法,也是进程间唯一的异步通信方式。信号来源硬件方式 用户在终端按下某些键。如 Ctrl+C硬件异常。如:除数为0、无效的存储访问等。这些事件由CPU检测到,然后通知给内核,由内核生成相应的信号,并把信号发送给原创 2015-11-04 23:22:32 · 942 阅读 · 0 评论 -
时间片轮转调度算法的提及和关于fork函数执行父,子进程先后顺序的理解
时间片轮转调度算法的提及和关于fork函数执行父,子进程先后顺序的理解 fork函数是用来创建进程的,命令行下输入man2 fork 看到他的函数声明:#include pid_t fork(void); fork函数调用一次会返回两次值,在成功调用fork函数后,当前进程会分裂为两个进程,一个是当前进程,返回值是子进程的ID;另一个是当前创建的子进原创 2014-07-29 19:12:19 · 4880 阅读 · 1 评论 -
关于stat函数和根据st_mode 的值获取目标文件的文件类型和用户权限,及对相关系统宏的一点想法
关于stat函数和根据st_mode的值获取目标文件的文件类型和用户权限,以及对相关系统宏的一点想法 谈论之前写说一下 stat 这个函数,这是个很有用的系统函数,大家都知道调用stat函数可以获取到由参数(文件路径)指定的文件的相关属性,包括文件类型,文件权限,硬链接数,用户,用户组,修改时间等等信息,而这一系列状态信息都是保存在对应的结构体里面的。原创 2014-07-29 15:16:06 · 6186 阅读 · 0 评论 -
关于int main(int argc,char*argv[])的一点小认识
关于intmain(int argc,char*argv[])的一点小认识 初学C语言时写程序主函数用的都是清一色的main() { }形式,似乎有它就足够了,甭管写什么程序一马当先把这玩意儿敲上去作打算。也看过main()里面加参数的形式,但是当时嗤之以鼻,只觉得没什么用处,还写一堆参数繁琐,就没再了解了。 最近学习linux原创 2014-07-26 11:10:56 · 1077 阅读 · 0 评论 -
负载均衡服务器的基本功能和实现原理
感谢原作者,原文:http://virtualadc.blog.51cto.com/3027116/615836负载均衡设备作为纵跨网络2-7层协议的设备,往往放置在网络设备和应用设备的连接处,对工程师在网络和应用基本知识方面的要求远高于其他设备,所以我们要在基本功能的理解上下更多的功夫。负载均衡设备还有另外一个称呼:4/7层交换机,但它首先是个2-3层交换机,这要求我们首先掌握2-3层的基本转载 2015-07-19 11:47:29 · 1068 阅读 · 0 评论 -
FTP下载速率分析
转:http://wenku.baidu.com/link?url=alCalWOCmDSSGorLpXa5ket4dsEPW5P0VvufkpG8zcgOc6Yi1V2gmqDWwHCqagOgDoZJhJJ5_l_-WWkZ5jj-iPei-EDAKkjC_QNapPQB5I7转载 2015-07-18 09:49:26 · 5318 阅读 · 0 评论 -
由一个线程例子引发的思考
原文链接:http://blog.csdn.net/lyh__521/article/details/49759111 在谈这个例子之前先贴上进程与线程的内存结构,方便对线程有一个更深的理解。(如果觉得前面的介绍很烦,可以直接跳到最后看问题的分析和最终解决方法的代码)进程的内存结构下图是在Linux/x86-32中典型的进程内存结构,从图中的地址分布可以看出,内核态占1G空间,用户态占3G空间原创 2015-11-10 14:10:59 · 3701 阅读 · 0 评论