linux
文章平均质量分 70
Crazy_Tortoise
A Crazy Tortoise
展开
-
实模式和保护模式
实模式:(即实地址访问模式)它是Intel公司80286及以后的x86(80386,80486和80586等)兼容处理器(CPU)的一种操作模式。实模式被特殊定义为20位地址内存可访问空间上,这就意味着它的容量是2的20次幂(1M)的可访问内存空间(物理内存和BIOS-ROM),软件可通过这些地址直接访问BIOS程序和外围硬件。实模式下处理器没有硬件级的内存保护概念和多道任务的工作模式。但是为了向转载 2013-08-03 15:48:48 · 465 阅读 · 0 评论 -
Linux下的UDP Socket简单例子
客户端代码 client.c#include #include #include #include int main(int argc, char **argv){ int sockfd; struct sockaddr_in servaddr; sockfd = socket(PF_INET, SOCK_DGRAM, 0);转载 2013-08-19 19:36:21 · 802 阅读 · 0 评论 -
Linux系统下UDP发送和接收广播消息小例子
// 发送端 #include #include #include #include #include #include #include #include #include using namespace std; int main() { setvbuf(stdout转载 2013-08-19 19:37:16 · 908 阅读 · 0 评论 -
struct sockaddr_nl 结构体 由来、含义以及使用——获取Linux路由表
Linux 用户态与内核态的交互 在 Linux 2.4 版以后版本的内核中,几乎全部的中断过程与用户态进程的通信都是使用 netlink 套接字实现的,例如iprote2网络管理工具,它与内核的交互就全部使用了netlink,著名的内核包过滤框架Netfilter在与用户空间的通 读,也在最新版本中改变为netlink,无疑,它将是Linux用户态与内核态交流的主要方法之一。它的通信依据是转载 2013-08-20 09:37:40 · 698 阅读 · 0 评论 -
Linux kernel路由机制分析
一.前言我对linux2.4.18的相关代码进行了阅读,从关键的几个接口函数入手,进而理清了整个路由部分的主要脉胳,理解了一些细节问题的处理,但还是有些问题还没有完全搞清楚。路由部分代码主要在linux代码树的/net/ipv4/下面: 对于下面报告内容的组织,我想通过由整体到部分到细节的顺序,尽量把我阅读代码学习到的所有的知识做一个有层次有条理的总结。转载 2013-08-20 09:50:55 · 1060 阅读 · 0 评论 -
Bash输入输出重定向
使用Bash可以方便的用实现输出输入的重定向,本文讨论重定向的一些细节和技巧。本文介绍部分是对Bash Quick Reference相关内容的翻译。目录[隐藏]1 基础知识2 简单重定向3 使用文件描述符的重定向4 重定向的组合应用5 重定向实例6 类似重定向的功能6.1 进程替换7 参考资料转载 2013-08-20 20:37:14 · 475 阅读 · 0 评论 -
socket编程头文件和常用函数
sys/types.h:数据类型定义sys/socket.h:提供socket函数及数据结构netinet/in.h:定义数据结构sockaddr_inarpa/inet.h:提供IP地址转换函数netdb.h:提供设置及获取域名的函数sys/ioctl.h:提供对I/O控制的函数sys/poll.h:提供socket等待测试机制的函数转载 2013-08-21 09:31:34 · 676 阅读 · 0 评论 -
linux多线程的总结(pthread用法)
#include int pthread_create(pthread_t *restrict tidp,const pthread_attr_t *restrict attr,void *(*start_rtn)(void),void *restrict arg);Returns: 0 if OK, error number on failure第一个参数为指向线程标识符的指转载 2013-08-21 13:36:13 · 525 阅读 · 0 评论 -
linux wait与waitpid函数的深入分析
一)系统调用wait 1)概述wait函数的原型为:pid_t wait(int *status)当进程退出时,它向父进程发送一个SIGCHLD信号,默认情况下总是忽略SIGCHLD信号,此时进程状态一直保留在内存中,直到父进程使用wait函数收集状态信息,才会清空这些信息.用wait来等待一个子进程终止运行称为回收进程.当父进程忘了用wait()函数等待已终止的子进程时,子进程转载 2013-08-21 14:00:45 · 463 阅读 · 0 评论 -
Linux进程间通信--进程,信号,管道,消息队列,信号量,共享内存
参考:《linux编程从入门到精通》,《Linux C程序设计大全》,《unix环境高级编程》参考:C和指针学习 说明:本文非常的长,也是为了便于查找和比较,所以放在一起了Linux 传统的进程间通信有很多,如各类管道、消息队列、内存共享、信号量等等。但它们都无法介于内核态与用户态使用,原因如表通信方法无法介于内核态与转载 2013-08-21 14:42:25 · 555 阅读 · 0 评论 -
linux编程获取本机IP地址的三种方法
这 是一项不太清晰而且没有多大意义的工作。一个原因是网络地址的设置非常灵活而且都是允许用户进行个性化设置的,比如一台计算机上可以有多块物理网卡或者虚 拟网卡,一个网卡上可以绑定多个IP地址,用户可以为网卡设置别名,可以重命名网卡,用户计算机所在网络拓扑结构未知,主机名设置是一个可选项并且同样可 以为一个计算机绑定多个主机名等,这些信息都会有影响。脱离了网络连接,单独的网络地址没有任何意义。编程中遇转载 2013-08-22 20:04:07 · 535 阅读 · 0 评论 -
eclipse + cdt + gdb 进行arm linux 交叉调试
如何使用eclipse进行嵌入式Linux的开发 习惯了在windows环境下开发的程序员在转到Linux平台时经常会抱怨没有一个好用的集成开发环境。和windows下常用的一些开发软件相比,Linux自带的一些开发环境使用起来要么界面和操作不够方便、友好,要么功能不全。其实我们完全可以在开源社区上找到操作方便,功能强大的开发环境。下面就向大家介绍一个能在Linux上运行,界面和功能与window转载 2013-08-27 17:53:14 · 647 阅读 · 0 评论 -
unix路由表flag标志位
在Unix系统中可以通过netstat -r命令查看系统的路由信息,在路由表中涉及到的flag标志位如下:输出项 说明 Destination 目标网段或者主机 Gateway 网关地址,”*” 表示目标是本主机所属的网络,不需要路由 Genmask 网络掩码 Flags 标记。一些可能的标记如下: U — 路由是活动的 H — 目标是一个转载 2013-08-15 21:09:01 · 5316 阅读 · 1 评论 -
makefile 命令
Makefile 变量Makefile 中自定义变量,方式一 递归方式,方式二 直接方式递归方式: VAR = xxx直接方式: VAR := xxx递归方式不能在变量中追加内容,比如 CFLAGS=$(CFLAGS) - o ,如果使用递归变量,则会造成无穷循环递归。所以,使用直接方式定义变量。Makefile 中常见的预定义变量:AR 库文件维护程序的名称,默原创 2013-08-28 10:32:22 · 745 阅读 · 0 评论 -
linux使用autotools进行编译
现在linux上的软件开发,一般使用autotools来制作Makefile。autotools使用需要一下工具(可以通过which + 工具名,查看系统中是否存在该工具) : alocalautoscanautoconfautoheaderautomakeautotools生成Makefile流程:1. 执行 autoscan 寻找源文件,创建 configu原创 2013-08-28 11:31:28 · 756 阅读 · 0 评论 -
在Linux主机下的软路由
实验名称:在Linux主机下的软路由实验说明:此实验不需要安装任务软件包。Linux自带的!!实验拓扑:ip地址规划如图所示:实验环境:测试机是windows或者是Linux机子都无所谓,只要保证充当路由功能的机子是Linux就行了!!实验目的:就是在Linux环境下让ip 192.168.1.121的这台机子和ip 10.0.0.100机子能相互通信。转载 2013-08-16 13:36:12 · 984 阅读 · 0 评论 -
linux下eclipse+CDT开发c/c++
A. 为什么要在 Linux使用Eclipse开发C/C++程序? Linux是一个以C/C++开发为主的平台,无论是Kernel或是Application,主要都使用C/C++开发。传统在 Linux下开发程序,是在文字模式下,利用vi等文字编辑器撰写C/C++程序存盘后,在Command line下使用gcc编译,若要debug,则使用gdb。这种开发方式生产力并转载 2013-08-17 18:43:16 · 723 阅读 · 0 评论 -
嵌入式 BootLoader
嵌入式linux系统从软件的角度通常分为四个层次:1。引导加载程序,包括固化在固件(firmware)中的boot代码(可选)和BootLoader两部分。2。Linux 内核,特定于嵌入式板子的定制内核以及内核的启动参数3。文件系统,包括根文件系统和建立于Flash 内存设备之上的文件系统,通常用ramdisk来作为rootfs4。用户应用程序,特定于用户的应用程序,有时在用户应转载 2013-08-28 15:25:09 · 907 阅读 · 0 评论 -
GDB让调试变简单
gdb(GNU Debugger)它是GNU组织发布的程序调试工具,在UNIX和类UNIX操作系统上都可使用GDB,目前GDB所能支持的编程语言有C,C++,JAVA等语言,主要用于调试C/C++.gdb以纯文本命令行执行,操作者熟悉以后可以利于它方便的调试程序,把程序的BUG找出来,同时它适用于子进程,多线程的调试.编译选项在程序源代码进行编译的时候,gcc的选项必须加上-g把调试信息加转载 2013-08-17 11:13:56 · 711 阅读 · 0 评论 -
ubuntu下软件安装卸载与查看
说明:由于图形化界面方法(如Add/Remove... 和Synaptic Package Manageer)比较简单,所以这里主要总结在终端通过命令行方式进行的软件包安装、卸载和删除的方法。一、Ubuntu中软件安装方法1、APT方式(1)普通安装:apt-get install softname1 softname2 …;(2)修复安装:apt-get -f i转载 2013-08-17 10:55:55 · 529 阅读 · 0 评论 -
Kdevelop的安装和使用
在红旗Linux4.1的开发工具盘中,提供了集成开发环境Kdevelop3.0.92。可以下载相应的ISO文件并利用其中的安装程序进行安装。安装完成后,从开始菜单中就可以启动Kdevelop:【开始】→【应用程序】→【软件开发】→【Kdevelop】利用Kdevelop可以编写C和C++ 程序,它把编辑、编译、调试和运行集成到一起,给编程工作带来很大方便。一般而言,用Kdevelop编程大原创 2013-08-17 11:12:35 · 924 阅读 · 0 评论 -
ubuntu中关闭防火墙
1.关闭ubuntu的防火墙 ufw disable2.卸载了iptables apt-get remove iptables1.用iptables -F这个命令来关闭防火墙,但是使用这个命令前,千万记得用iptables -L查看一下你的系统中所有链的默认target,iptables -F这个命令只是清除所有规则,只不会真正关闭iptables.想象一下,如果你转载 2013-08-18 16:38:06 · 1449 阅读 · 0 评论 -
zebra路由软件使用大全
前言Zebra是一个路由软件包,提供基于TCP/IP路由服务,支持RIPv1, RIPv2, RIPng, OSPFv2, OSPFv3, BGP- 4, 和 BGP-4+等众多路由协议。Zebra还支持BGP特性路由反射器(Route Reflector)。除了传统的 IPv4路由协议,Zebra也支持IPv6路由协议。如果运行的SNMP守护进程(需要ucd-snmp)支持SMUX协转载 2013-08-18 15:09:09 · 3789 阅读 · 0 评论 -
Ubuntu 创建桌面快捷方式
一、第一种方式1. 安装必要软件 gnome-panel [python] view plaincopysudo apt-get install --no-install-recommends gnome-panel 2. 开始创建桌面快捷方式在terminal 中输入如下命令:[python]转载 2013-08-18 15:20:58 · 570 阅读 · 0 评论 -
用Zebra做简单的RIP实验
RIP是应用较早、使用较普遍的IGP,适用于小型同类网络,是典型的距离向量(distance-vector)协 议。RIP通过广播UDP报文来交换路由信息,每30秒发送一次路由信息更新。RIP提供跳跃计数(hop count)作为尺度来衡量路由距离,跳跃计数是一个包到达目标所必须经过的路由器的数目。如果到相同 目标有二个不等速或不同带宽的路由器,但跳跃计数相同,则RIP认为两个路由是等距离的。RI转载 2013-08-18 18:17:15 · 1984 阅读 · 0 评论 -
linux 进程间通信
消息队列IPC使用消息可以实现进程之间的异步通信,(linux进程享有独立的内存空间,一个进程不能直接调用另一个进程的函数)#include通常引入一个通用的头文件,定义消息读写所需要的信息#define MAX_LINE 80#define MY_MQ_ID 111Typedef struct{ Long type;原创 2013-08-29 15:37:52 · 947 阅读 · 0 评论 -
linux select函数
Select在Socket编程中还是比较重要的,可是对于初学Socket的人来说都不太爱用Select写程序,他们只是习惯写诸如connect、accept、recv或recvfrom这样的阻塞程序(所谓阻塞方式block,顾名思义,就是进程或是线程执行到这些函数时必须等待某个事件的发生,如果事件没有发生,进程或线程就被阻塞,函数不能立即返回)。可是使用Select就可以完成非阻塞(所转载 2013-08-29 14:36:07 · 505 阅读 · 0 评论 -
Linux下Fork与Exec使用
一、引言 对于没有接触过Unix/Linux操作系统的人来说,fork是最难理解的概念之一:它执行一次却返回两个值。fork函数是Unix系统最杰出的成就之一,它是七十年代UNIX早期的开发者经过长期在理论和实践上的艰苦探索后取得的成果,一方面,它使操作系统在进程管理上付出了最小的代价,另一方面,又为程序员提供了一个简洁明了的多进程方法。与DOS和早期的Windows不同,Unix/Li转载 2013-08-29 15:03:58 · 480 阅读 · 0 评论 -
嵌入式linux设备驱动程序开发
一、设备驱动程序简介 系统调用是操作系统内核和应用程序之间的接口,设备驱动程序是操作系统内核与硬件设备之间的接口。设备驱动程序为应用程序屏蔽了硬件的细节,这样在应用程序来看,硬件设备只是一个设备文件,可以向操作普通文件一样对硬件设备进行操作。 功能:(1)对硬件设备初始化和释放(2)把数据从内核传送到硬件,从硬件读取数据(3)读取应用程序传送给设备文件的数据和回送转载 2013-08-29 22:35:43 · 1209 阅读 · 0 评论 -
linux 进程
GNU/Linux 进程模型 GNU/Linux进程有两种基本类型,内核线程和用户进程。内核线程是在内核中由kernel_thread()函数创建,用户进程由fork()和 clone()创建。(讨论用户进程) 创建一个子进程(由fork创建),就创建了一个新的子任务,并为它复制了父任务使用的内存。两个进程使用的内存是相互独立的。在调用fork的时候,父进程当时的所有变原创 2013-08-29 15:27:21 · 756 阅读 · 0 评论 -
linux 线程
POSIX线程(P线程)编程 要想知道正在使用的是哪个P线程库:$ getconf GNU_LIBPTHREAD_VERSION执行这个命令会显示出LinuxThreads或NPTL及其版本号 进程和线程都有控制流,两者都能同时运行,线程共享数据,进程不共享。创建线程的时候,线程唯一独有的元素是线程独有的栈,线程的代码和全局变量都是共同的;但进程会复制代原创 2013-08-29 15:28:44 · 556 阅读 · 0 评论 -
Linux下发送与接收组播数据(socket编程)
Sender.cpp[c-sharp] view plaincopyprint?#include #include #include #include #include #include #include #include #include转载 2013-09-07 10:35:43 · 1124 阅读 · 0 评论 -
Linux学习笔记(一)
1、GNUGNU计划,又称革奴计划,是由Richard Stallman在1983年9月27日公开发起的。它的目标是创建一套完全自由的操作系统。GPL:GNU通用公共许可证(GNU General Public License)自由软件关乎使用者运行、复制、发布、研究、修改和改进该软件的自由。而不是免费。GPL:1.它要求软件以源代码的形式发布,并规定任何用户能够以源代码的形式将软原创 2013-10-04 17:29:41 · 1434 阅读 · 0 评论 -
linux 创建连接命令 ln -s 软链接
硬链接和软连接的区别:要说明这个问题,先说明下liunx下文件和目录的本质。事实上,在liunx上,目录也是文件的一种,它是储存了一张表的文件。例如有一个叫程序的文件夹,里面有两个文件1和2.在那张目录表内。它的内容是这样的名称 节点1 3382 228那么什么是节点呢?c语言我们都学过,我们简单地把节点号理解成一个数组的下标,把内存看成一个大数组,每个文件都可以看成一转载 2013-10-17 10:01:42 · 694 阅读 · 0 评论 -
Msys/MinGW与Cygwin/gcc
本文转自:http://www.lupaworld.com/273398/viewspace-122539.html一 MinGWMinGW 官方网站为 http://www.mingw.org/MinGW,即 Minimalist GNU For Windows(GCC compiler suite)。它是一些头文件和端口库的集合,该集合允许人们在没有第三方动态链转载 2013-11-06 10:40:55 · 622 阅读 · 0 评论 -
Linux的五个查找命令:find,locate,whereis,which,type
原文地址:http://www.kuqin.com/linux/20091009/70532.html使用电脑的时候,经常需要查找文件。在Linux中,有很多方法可以做到这一点。国外网站LinuxHaxor总结了五条命令,你可以看看自己知道几条。大多数程序员,可能经常使用其中的2到3条,对这5条命令都很熟悉的人应该是不多的。1. findfind是最常见转载 2013-11-26 00:09:42 · 601 阅读 · 0 评论 -
硬盘类型和Linux分区
原文地址: http://blog.csdn.net/zollty/article/details/7001950IDE,SATA,SCSI是硬盘的三个大类,技术上有较大区别。其中SCSI最先进,当然价格也更贵。ATA、Ultra ATA、DMA、Ultra DMA等接口都属于IDE硬盘,PATA估计就是Ultra ATA了。SAS即串行连接SCSI,是新一代的SCSI转载 2013-11-25 23:54:21 · 830 阅读 · 0 评论 -
tar指令
tar jxvf 是解压指今解压以bzip2压缩的文件-j 解压命令(*.bz)-x 释放-v 释放时的信息-f 指定解压文件看看下面这些 tar -cvf a.tar a 创建文件a的tar包 tar -tvf a.tar 查看tar包包含的文件转载 2013-10-17 09:26:06 · 718 阅读 · 0 评论 -
Linux-stand alone与super daemon
鸟哥的Linux私房菜--基础学习篇内谈到,在一般正常的Linux系统环境下,服务的启动与管理主要有两种方式:stand alone:顾名思义,stand alone就是直接执行该服务的可执行程序(执行档),让该可执行程序(执行档)直接载入到内存当中运作,用这种方式来启动可以让该服务具有较快速回应的优点。一般来说,这种服务的启动script都会放置到/etc/init.d/这个目录底下(貌转载 2013-11-26 00:14:15 · 1405 阅读 · 0 评论 -
linux 终端,控制台
终端是一种字符型设备,它有多种类型,通常使用tty来简称各种类型的终端设备。tty是Teletype的缩写。 Teletype是最早出现的一种终端设备,很象电传打字机(或者说就是),是由Teletype公司生产 的。设备名放在特殊文件目录/dev/下,终端特殊设备文件一般有以下几种: 1.串行端口终端(/dev/ttySn) 串行端口终端(Serial Port转载 2013-11-28 19:12:08 · 619 阅读 · 0 评论