
linux
文章平均质量分 59
天成天下
打杂的程序猿,干了这么多年的程序员,已经麻木,已经迷失,不知前路在何方,在此写博客,也只是聊以自慰罢了。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Linux添加虚拟网卡的多种方法
Linux添加虚拟网卡的多种方法有时候,一台服务器需要设置多个ip,但又不想添加多块网卡,那就需要设置虚拟网卡.这里介绍几种方式在Linux服务器上添加虚拟网卡. 我们向eth0中添加一块虚拟网卡:第一种方法:快递创建\删除虚拟网卡sudo ifconfig eth0:0 192.168.10.10 up以上的命令就可以在eth0网卡上创建一个叫eth0:0转载 2017-03-10 13:14:50 · 7725 阅读 · 0 评论 -
Linux网络编程:原始套接字的魔力【续】
如何从链路层直接发送数据帧 本来以为这部分都弄完了,结果有朋友反映说看了半天还是没看到如何从链路层直接发送数据。因为上一篇里面提到的是从链路层“收发”数据,结果只“收”完,忘了“发”,实在抱歉,所以就有这篇续出来了。 上一节我们主要研究了如何从链路层直接接收数据帧,可以通过bind函数来将原始套接字绑定到本地一个接口上,然后该套接字就只接收从该接口收上来的对应的数据转载 2017-03-11 14:24:01 · 233 阅读 · 0 评论 -
修改rc.local无法启动时自救
修改rc.local无法启动时自救 1、使用方向键选择你希望引导的内核。 2、按下e键以编辑这个命令行。 3、选择以单词kernel起头的这行。 4、按下e键以编辑这个命令行。 5、在行末添加一个字母S 6、回车接受改动。 7、按b键接受修改并且启动内核。转载 2017-03-11 14:46:16 · 2889 阅读 · 0 评论 -
Application.mk语法解释
转载自:http://blog.youkuaiyun.com/roland_sun/article/details/46318893Application.mk是用来描述你的应用程序需要哪些模块,以及这些模块所要具有的一些特性。而相对的Android.mk是用来描述要编译某个具体的模块,所需要的一些资源,包括要编译的源码、要链接的库等等。Application.mk所要描述的内容主要包括:转载 2017-04-07 14:26:14 · 329 阅读 · 0 评论 -
Linux网络编程:原始套接字的魔力【上】
基于原始套接字编程 在开发面向连接的TCP和面向无连接的UDP程序时,我们所关心的核心问题在于数据收发层面,数据的传输特性由TCP或UDP来保证: 也就是说,对于TCP或UDP的程序开发,焦点在Data字段,我们没法直接对TCP或UDP头部字段进行赤裸裸的修改,当然还有IP头。换句话说,我们对它们头部操作的空间非常受限,只能使用它们已经开放给我们的诸如源、目的I转载 2017-03-11 14:21:02 · 426 阅读 · 0 评论 -
JNI学习积累之一 ---- 常用函数大全
转载自:http://blog.youkuaiyun.com/qinjuning/article/details/7595104 最近一段时间,在工作方面比较闲,分配的Bug不是很多,于是好好利用这段时间就着源代码看了些许模块, 主要方式 还是贼看贼看代码, 同时利用烧机的便利,加Log观看,基本上都能弄个脸熟 。心里想着该写点什么了?可是水平不够,再加上 包括很多真正实现地方-转载 2017-04-12 19:26:40 · 332 阅读 · 0 评论 -
JNI学习积累之二 ---- 数据类型映射、域描述符说明
转载自:http://blog.youkuaiyun.com/qinjuning/article/details/7599796 在Java存在两种数据类型: 基本类型 和 引用类型 ,大家都懂的 。 在JNI的世界里也存在类似的数据类型,与Java比较起来,其范围更具严格性,如下: 1、primitive types ----基本数据类型,如:i转载 2017-04-12 19:30:17 · 304 阅读 · 0 评论 -
JNI学习积累之三 ---- 操作JNI函数以及复杂对象传递
转载自: http://blog.youkuaiyun.com/qinjuning/article/details/7607214 在掌握了JNI函数的使用和相关类型的映射后,以及知晓何利用javah工具生成对应的jni函数以及如何生成动态 链接库 (windos下就是.dll库,Linux就是.so库了,不懂在Window下生成dll动态库的,具体流程可看我的这篇博客: 《A转载 2017-04-12 19:32:05 · 375 阅读 · 0 评论 -
android开发ndk调用第三方so库
转载自:http://blog.youkuaiyun.com/hongbochen1223/article/details/52957421 1.0 功能概述1.0.1 概述在Android开发中,Java调用C/C++函数库是经常遇到的,我们的android开发中使用JNI开发技术,有下面几种情况:已经使用C/C++发了某些函数库,如果再使用java封装相应的函数库的话,可能会话费更转载 2017-04-19 09:26:44 · 1374 阅读 · 0 评论 -
Linux的TUN/TAP编程
转载自:http://blog.chinaunix.net/uid-317451-id-92474.html TUN/TAP虚拟网络设备为用户空间程序提供了网络数据包的发送和接收能力。他既可以当做点对点设备(TUN),也可以当做以太网设备(TAP)。实际上,不仅Linux支持TUN/TAP虚拟网络设备,其他UNIX也是支持的,他们之间只有少许差别。原理简介TUN/TAP虚拟转载 2017-04-17 12:55:26 · 1911 阅读 · 0 评论 -
Linux下的ioctl()函数详解
转载自:http://www.cnblogs.com/tdyizhen1314/p/4896689.html 我这里说的ioctl函数是指驱动程序里的,因为我不知道还有没有别的场合用到了它,所以就规定了我们讨论的范围。写这篇文章是因为我前一阵子被ioctl给搞混了,这几天才弄明白它,于是在这里清理一下头脑。一、 什么是ioctl ioctl是设备驱动程序中对设备的转载 2017-05-17 11:44:56 · 2621 阅读 · 0 评论 -
proc/sys/net/ipv4/下各项的意义
转载自:http://blog.chinaunix.net/uid-20721581-id-2460249.html /proc/sys/net/ipv4/icmp_timeexceed_rate这个在traceroute时导致著名的“Solaris middle star”。这个文件控制发送ICMP Time Exceeded消息的比率。/proc/sys/net/ipv4/转载 2017-05-17 17:43:22 · 635 阅读 · 0 评论 -
/bin/sh^M:损坏的解释器: 没有那个文件或目录
转载自:http://blog.youkuaiyun.com/njchenyi/article/details/8492854 脚本文件保存时使用了DOS格式,用DOS2UNIX转为UNIX格式,也可以用vim打开,用:set ff=unix转换。不要在 Windows下编辑脚本文件,否则经常会遇到这种问题。方法1:代码:sed -i 's/\r$//' server.sh方转载 2017-05-31 11:58:27 · 580 阅读 · 0 评论 -
Linux网络编程:原始套接字的魔力【下】
可以接收链路层MAC帧的原始套接字 前面我们介绍过了通过原始套接字socket(AF_INET, SOCK_RAW, protocol)我们可以直接实现自行构造整个IP报文,然后对其收发。提醒一点,在用这种方式构造原始IP报文时,第三个参数protocol不能用IPPROTO_IP,这样会让系统疑惑,不知道该用什么协议来伺候你了。 今天我们介绍原始套接字的另一种用法转载 2017-03-11 14:22:59 · 254 阅读 · 0 评论 -
Linux网络编程:原始套接字的魔力【上】
基于原始套接字编程 在开发面向连接的TCP和面向无连接的UDP程序时,我们所关心的核心问题在于数据收发层面,数据的传输特性由TCP或UDP来保证: 也就是说,对于TCP或UDP的程序开发,焦点在Data字段,我们没法直接对TCP或UDP头部字段进行赤裸裸的修改,当然还有IP头。换句话说,我们对它们头部操作的空间非常受限,只能使用它们已经开放给我们的诸如源、目的I转载 2017-03-11 14:21:36 · 246 阅读 · 0 评论 -
UNIX域Socket命名空间
socket进程通信命名方式有两种:1、普通命名空间 2、抽象命名空间1、普通命名空间:socket会根据此命名创建一个同名的socket文件,客户端连接的时候读取该socket文件链接到socket服务端。此命名空间却又如下3个问题问题1:这种方式的弊端是服务必须对socket文件的路径具备写权限,客户端必须知道socket文件路径,且必 须对读路径有读权限。问原创 2017-03-10 19:13:04 · 2516 阅读 · 0 评论 -
LINUX的I/O模型
1、阻塞式I/O2、非阻塞式I/O例如:进程把一个套接字设置成非阻塞是在通知内核:当所请求的I/O操作非得把本进程投入睡眠才能完成,不要把本进程投入睡眠,而是返回一个错误。3、I/O复用模型例如:有了I/O复用,就可以调用select()或poll(),阻塞在这两个系统调用中的某一个之上,而不是阻塞在真正的I/O系统调用上。4、信号驱动式I/O模型例如:可用信号,让内核在描原创 2017-03-10 21:58:57 · 245 阅读 · 0 评论 -
linux od 命令:按不同进制显示文件
介绍:od( octal dump)命令可以以八进制、十进制、十六进制和ASCII码来显示文件或者流,它们对于访问或可视地检查文件中不能直接显示在终端上的字符很有用。语法:od [ -A 地址进程 ] [ -t 显示格式 ] 文件选项介绍:-A 地址进程:按指定的进制显示地址信息。 -t 显示格式 :指定数据的显示格式 -A 指定地址进制包括:o转载 2017-03-10 22:23:36 · 417 阅读 · 0 评论 -
linux下动态库的生成和使用
一、动态库的基本概念1、动态链接库是程序运行时加载的库,当动态链接库正确安装后,所有的程序都可以使用动态库运行程序。动态链接库是目标文件的集合,目标文件在动态链接库中的组织方式是按照特殊方式形式的。库中函数和变量的地址是相对地址,不是绝对地址,其实地址在调用动态库的程序加载时形式。、2、动态链接库的名称有别名、真名和链接名。别名中一个前缀“lib”,然后是库的名字,再加上一个后缀".so"原创 2017-03-10 22:36:02 · 3253 阅读 · 0 评论 -
linux 静态库的生成与使用
1、windows系统包括静态链接库(*.lib文件)和动态链接库(*.dll文件)。2、linux通常把库文件存放在/usr/lib或/lib目录下。linux库文件名:前缀lib、库名和后缀3部分组成,其中动态链接库以.so作为后缀,静态链接库通常以.a作为后缀。区别:静态链接库的代码在编译时就拷贝到应用程序中,这样的优点是节省编译时间动态库是程序在开始运行后调用库函数原创 2017-03-10 23:14:13 · 1103 阅读 · 0 评论 -
linux 下Libxml2使用
1、下载libxml22、拷贝到 /usr/local/libxml3、解压缩4、进入解压目录5、#chmod 777 ./configure6、# ./configure -prefix /usr/local/libxml (安装目录)7、# make8、# make install安装完成后/usr/local/libxml下会多生成4个文件夹:bin原创 2017-03-10 23:39:00 · 811 阅读 · 0 评论 -
Netlink套接字
Netlink 用于在内核模块与在用户地址空间中的进程之间传递消息的。它包含了用于用户进程的基于标准套接字的接口和用于内核模块的一个内部核心 API。Netlink 是一种特殊的 socket,它是 Linux 所特有的,类似于 BSD 中的AF_ROUTE 但又远比它的功能强大,目前在最新的 Linux 内核(2.6.14)中使用netlink 进行应用与内核通信的应用很多,包括:路由转载 2017-03-11 13:44:26 · 391 阅读 · 0 评论 -
linux socket 操作链路层
Linux提供最常用的网络通信应用程序开发接口--Berkerley套接字(Socket).它既适用于同一主机上进程间通信(IPC),又适用于不同主机上的进程间通信。套接字的设置通过socket调用完成:int socket(int family,int type,int protocol);其中family指通信域或协议族,Linux系统支持的网络协议族有PF_UNIX,PF_I转载 2017-03-11 14:04:32 · 1525 阅读 · 0 评论 -
write()的奥秘
在Linux下我们在使用设备的时候,都会用到write这个函数,通过这个函数我们可以象使 用文件那样向设备传送数据。可是为什么用户使用write函数就可以把数据写到设备里面 去,这个过程到底是怎么实现的呢?这个奥秘就在于设备驱动程序的write实现中,这里我结合一些源代码来解释如何使得一 个简简单单的write函数能够完成向设备里面写数据的复杂过程。这里的源代码主要来自转载 2017-03-11 13:58:58 · 725 阅读 · 0 评论 -
Linux原始套接字实现分析
本文从IPV4协议栈原始套接字的分类入手,详细介绍了链路层和网络层原始套接字的特点及其内核实现细节。并结合原始套接字的实际应用,说明各类型原始套接字的适应范围,以及在实际使用时需要注意的问题。 一、原始套接字概述协议栈的原始套接字从实现上可以分为“链路层原始套接字”和“网络层原始套接字”两大类。本节主要描述各自的特点及其适用范围。链路层原始套接字可以直接用于接收和发送链路层的M转载 2017-03-11 14:09:59 · 750 阅读 · 0 评论 -
揭开网络编程常见API的面纱【上】
Linux网络编程API函数初步剖析 今天我们来分析一下前几篇博文中提到的网络编程中几个核心的API,探究一下当我们调用每个API时,内核中具体做了哪些准备和初始化工作。 1、socket(family,type,protocol) 当我们在开发网络应用程序时,使用该系统调用来创建一个套接字。该API所做的工作如下所示: 该系转载 2017-03-11 14:16:16 · 229 阅读 · 0 评论 -
揭开网络编程常见API的面纱【下】
Linux网络编程数据收发的API流程分析 只要把数据在协议栈中的流动线路和脉络弄清楚了,关于协议栈的实现部分,理解起来就轻松多了。在网络编程章节的数据接收过程中,我们主要介绍过read()、recv()、recvfrom()还有一个recvmsg()没介绍到,今天我们就来看一下这几个API函数到底有什么差别。数据接收 在接收数据的过程,主要分两个阶转载 2017-03-11 14:17:08 · 243 阅读 · 0 评论 -
Linux中修改环境变量及生效方法
转载自:http://www.cnblogs.com/franson-2016/p/6063226.htmlLinux中修改环境变量及生效方法方法一: 在/etc/profile文件中添加变量【对所有用户生效(永久的)】 用VI在文件/etc/profile文件中增加变量,该变量将会对Linux下所有用户有效,并且是“永久的”。 例如:转载 2017-09-11 09:16:23 · 490 阅读 · 0 评论