
Linux
文章平均质量分 58
jieniyimiao
真的英雄,在于,以脆弱的凡人之躯,而具有神性的不可战胜。
展开
-
Linux中的特殊权限s、t、i、a.md
楔子linux除了UGO权限外,还有特殊权限s、t、i、a四个特殊权限,这里简单介绍下这四个权限的功能。umask利用umask查看系统的权限为四位(0002),首位就是特殊权限位,SetUID为4,SetGID为2,t为1,0就表示没有特殊权限s权限SetUID权限解读(针对所属主设置s权限,数字表示为4)SetUID:当一个可执行程序具有SetUID权限,用户执行这个程序时,将以这个程序所有者的身份执行。前提是这个文件是可执行文件,可就是具有x权限(属组必须先设置相应的x权限)。chmod原创 2020-06-25 08:36:10 · 968 阅读 · 0 评论 -
内存管理算法--Buddy伙伴算法
Buddy算法的优缺点:1)尽管伙伴内存算法在内存碎片问题上已经做的相当出色,但是该算法中,一个很小的块往往会阻碍一个大块的合并,一个系统中,对内存块的分配,大小是随机的,一片内存中仅一个小的内存块没有释放,旁边两个大的就不能合并。2)算法中有一定的浪费现象,伙伴算法是按2的幂次方大小进行分配内存块,当然这样做是有原因的,即为了避免把大的内存块拆的太碎,更重要的是使分配和释放过程迅速。但是他也带来原创 2015-12-01 15:29:34 · 1976 阅读 · 0 评论 -
Linux内核list_head学习(二)
前一篇讨论了list_head 结构的基本结构和实现原理,本文主要介绍一下实例代码。自己如果想在应用程序中使用list_head 的相应操作(当然应该没人使用了,C++ STL提供了list 用起来貌似更方便), 在应用程序中需要包含自己的 "list.h" 头文件:/*注:这个list.h 是为了配合示例程序而建的,内容来自:linux/include/linux/list.h 和相关文件*原创 2015-11-29 16:49:44 · 1960 阅读 · 3 评论 -
Linux 内核list_head 学习(一)
在Linux内核中,提供了一个用来创建双向循环链表的结构 list_head。虽然linux内核是用C语言写的,但是list_head的引入,使得内核数据结构也可以拥有面向对象的特性,通过使用操作list_head 的通用接口很容易实现代码的重用,有点类似于C++的继承机制(希望有机会写篇文章研究一下C语言的面向对象机制)。下面就是kernel中的list_head结构定义:struct list原创 2015-11-29 16:48:05 · 1436 阅读 · 2 评论 -
linux中mmap系统调用原理分析与实现
参考文章:http://blog.youkuaiyun.com/shaoguangleo/article/details/5822110linux中mmap系统调用原理分析与实现 1、mmap系统调用(功能) void* mmap ( void * addr , size_t len , int prot , int flags ,int fd , off_t offset ) 内存映射函原创 2015-11-08 21:44:02 · 6098 阅读 · 0 评论 -
Linux的分段和分页机制
1 基于80x86的Linux分段机制80386的两种工作模式:80386的工作模式包括实地址模式和虚地址模式(保护模式)。Linux主要工作在保护模式下。在保护模式下,80386虚地址空间可达16K个段,每段大小可变,最大达4GB。逻辑地址到线性地址的转换由80386分段机制管理。段寄存器CS、DS、ES、SS、FS或GS各标识一个段。这些段寄存器作为段选择器,用来选择该段的描述符。分段逻辑地址原创 2015-11-07 21:23:58 · 3578 阅读 · 0 评论 -
linux中断处理原理分析
首先需要了解一下中断的概念:一个“中断”仅仅是一个信号,当硬件需要获得处理器对它的关注时,就可以发送这个信号。内核维护了一个中断信号线的注册表,该注册表类似于I/O端口的注册表。 模块在使用中断前要先请求一个中断通道(或中断请求IRQ),然后在使用后释放该通道。用到的API就是request_irq()以及free_irq()。注意在调用request_irq()和free_irq()的原创 2015-09-04 17:58:01 · 1664 阅读 · 0 评论 -
GitHub学习总结
花了半天的功夫,终于把github这个东西搞秦楚了,算是入了门,以后再慢慢学习实践,不要想一口吃成个大胖子,先入门,随之时间的向前推进,你是理解和使用熟练度会有很大的提高 的。========为了更好地进行团队开发,所以写了这篇短文,简略介绍了一下 git 的使用(主要在 Windows 下)。版本控制简介至于什么是版本控制?作为程序员大军之一,想必大家有这样的原创 2015-06-13 11:09:44 · 1859 阅读 · 0 评论 -
gcc编译常见问题
inux C gcc -lm 使用math.h中声明的库函数还有一点特殊之处,gcc命令行必须加-lm选项,因为数学函数位于libm.so库文件中(这些库文件通常位于/lib目录下),-lm选项告诉编译器,我们程序中用到的数学函数要到这个库文件里找。本书用到的大部分库函数(例如printf)位于libc.so库文件中,使用libc.so中的库函数在编译时不需要加-lc原创 2015-06-07 14:18:58 · 1888 阅读 · 0 评论 -
内核自动探测中断号
我们来看short_kernelprobe函数如何实现由内核自动探测中断号的:[cpp] view plaincopy466void short_kernelprobe(void) 467{ 468 int count = 0; 469 do { 470 unsigned long mask; 471 472 mask = probe_irq_o原创 2015-12-03 22:09:11 · 1992 阅读 · 0 评论 -
linux下C实现对键盘事件的监听(按下键盘的时候程序立刻读取)
#include #include int scanKeyboard(){int in;struct termios new_settings;struct termios stored_settings;tcgetattr(0,&stored_settings);new_settings = stored_settings;new_settings.c_lflag &= (原创 2016-04-17 15:29:15 · 25544 阅读 · 4 评论 -
linux 处理键盘 鼠标事件
1.读取键盘的值,进行相应的处理。#include #include #include #include #include int main(){ int fd_kb; struct input_event event_kb; fd_kb = open("/dev/input/event1", O_RDONLY); //键盘输入原创 2016-04-17 19:48:26 · 6495 阅读 · 1 评论 -
RPM包制作
http://blog.youkuaiyun.com/king_on/article/details/7169384http://www.worldhello.net/2011/04/02/2405.htmlhttps://my.oschina.net/guol/blog/182310原创 2016-09-29 15:30:45 · 355 阅读 · 0 评论 -
Linux下shell编程学习
1.编程入门:http://c.biancheng.net/cpp/view/7011.html2.自启动服务脚本:http://www.linuxidc.com/Linux/2014-02/97271.htm3.chkconfig介绍:http://blog.youkuaiyun.com/monkey_d_meng/article/details/5573580Linux shell编写系统服务脚本事先准备原创 2016-09-21 14:14:59 · 539 阅读 · 0 评论 -
file-max与ulimit的关系与差别
http://zhangxugg-163-com.iteye.com/blog/1108402http://ilikedo.iteye.com/blog/1554822转载 2016-07-21 09:27:58 · 1173 阅读 · 0 评论 -
NTP简介与配置
1.http://baike.baidu.com/link?url=A9OHwQHPsY8suovY9PuZADs3RFB-3c0b1Zjya5PXK9CZqogAbmeNU3aXsLVA5K5ezIv6tT7GyPMIC5NO3oO7Gq2.http://www.cnblogs.com/liuyou/archive/2012/07/29/2614341.html3.http://acooly.i原创 2016-07-28 20:19:02 · 650 阅读 · 0 评论 -
CentOS虚拟机NAT方式无法上网解决方法
#vi /etc/sysconfig/network-scripts/ifcfg-eth0其中部分内容如下:DEVICE=eth0 #设备名称BOOTPROTO=dhcp #连接方式,dhcp会自动分配地址,此时不需要在下面设置ip和网关HWADDR=00:0C:29:AD:66:9F #硬件地址,不要修改ONBOOT=yes #yes表示启动就执行该配置,需要改为yes网上会有些方法需要原创 2016-07-23 15:30:15 · 659 阅读 · 0 评论 -
LVS学习入门
1.LVS DR模式负载均衡配置详解(配置篇一)http://www.07net01.com/storage_networking/LVS_DRmoshifuzaijunhengpeizhixiangjie_peizhipianyi__56840_1358680093.html2.LVS负载均衡DR模式部署http://www.cnblogs.com/xdpxyxy/p/4170101.html3原创 2016-07-23 15:21:47 · 974 阅读 · 0 评论 -
通过select较高效的捕获和处理鼠标键盘事件
select监听这些文件描述符的状态,若有一个发生变化则返回,否则阻塞。#include #include #include #include #include #include #include #include int main(int argc,char **argv) { int fd原创 2016-04-18 10:17:53 · 2927 阅读 · 1 评论 -
用C语言在linux下获取鼠标指针的相对位置
1. 关于"/dev/input/mice"相信很多人都用过Linux,也许你发现不管是在X-window下面,还是在Console下面,鼠标都是可以操作的。那么你有没有考虑过这些鼠标都是从哪来的?不错!他们都是从"/dev/input/mice"这个文件里来的。如果你对Linux比较熟,那么你肯定看得出来这是一个设备文件。"mice"就是Linux下面鼠标的设备文件,不管你用的是PS2的还是US原创 2016-04-17 20:35:13 · 9201 阅读 · 4 评论 -
X Window 简单入门教程
1.X Window 系统的窗口显示原理:http://www.ibm.com/developerworks/cn/linux/l-cn-xwin/2.X Window 程式设计入门--第二章 X Programming 的第一步http://fanqiang.chinaunix.net/a4/b8/20010601/180800311.html原创 2015-06-07 17:03:52 · 2027 阅读 · 0 评论 -
CMake快速入门
入门基础:http://www.ibm.com/developerworks/cn/linux/l-cn-cmake/ 在 linux 下使用 CMake 构建应用程序 入门进阶:http://blog.youkuaiyun.com/dbzhang800/article/details/6314073 cmake 学习笔记(一)实战分析:http://blog.csdn.n原创 2015-06-27 11:52:15 · 1573 阅读 · 0 评论 -
SSH连接虚拟机中的Ubuntu 12.0.4
摘要:主要是解决不能使用ssh远程Ubuntu的问题、使用的远程工具是putty、也可以使用xshell、ubunut12.0.4是装在虚拟机中的、不过这个应该没有什么影响。一:问题的出现前两天使用VMware装了一个ubuntu12.0.4之后、因为常常使用命令行、又喜欢在虚拟机与实体机中切来切去、感觉很不方便、就想在xp中远程ubuntu、遇到了点小意外、经过一会调试解决成功、原创 2015-05-23 18:45:13 · 1385 阅读 · 0 评论 -
linux下阅读源代码的工具
source insight 使用教程:http://wenku.baidu.com/link?url=AWmefe23g3AJRja3sGIky8rhmDELYXK9xQHGW137Cjk4qkItt5t8asR4XJqtMpY0GRsL8bnvljzeVRaxVNTzEDVdudmkJqltuWqq6z2Rla_On2mW8sx15bicICLxPwuDwqcUDZHuIq5o6eMdReo0原创 2015-01-21 20:55:25 · 2377 阅读 · 0 评论 -
GDB调试程序入门
用GDB调试程序GDB概述————GDB是GNU开源组织发布的一个强大的UNIX下的程序调试工具。或许,各位比较喜欢那种图形界面方式的,像VC、BCB等IDE的调试,但如果你是在UNIX平台下做软件,你会发现GDB这个调试工具有比VC、BCB的图形化调试器更强大的功能。所谓“寸有所长,尺有所短”就是这个道理。一般来说,GDB主要帮忙你完成下面四个方面的功能:原创 2014-10-01 17:00:56 · 1246 阅读 · 0 评论 -
编译和链接那点事<上>
http://www.0xffffff.org/?p=323转载 2014-09-30 15:55:10 · 1721 阅读 · 0 评论 -
汇编语言---函数调用栈
http://bdxnote.blog.163.com/blog/static/8444235201063083331797/原创 2014-09-30 15:47:14 · 1244 阅读 · 0 评论 -
GCC笔记
GCC 编译流程: GCC在编译C/C++程序时,会经过一下4步1.预处理gcc -E hello.c -o hello.i 2.编译gcc -S hello.i -o hello.s 3.汇编gcc -c hello.s -o hello.o 4.链接gcc hello.o -o hello原创 2014-09-30 18:40:42 · 917 阅读 · 0 评论 -
编译和链接那点事<下>
http://www.0xffffff.org/?p=357转载 2014-09-30 18:23:02 · 1326 阅读 · 0 评论 -
G++(GNU C++)安装及使用(windows)
安装步骤:1、下载 Cygnus 的G++编译器(http://www.claremontmckenna.edu/math/ALee/g++/full.exe),并保存到E盘(或其它任意盘),格式为E:full.exe。2、直接运行该文件,可能需要十几分钟的时间(中间会有停顿甚至没有任何提示性图片或者符号,需要耐心等待哦)。 或者Win + R ,输入cmd,按E原创 2014-10-06 11:04:10 · 10817 阅读 · 1 评论 -
centOS7.0设置默认进入字符界面
Targetssystemd uses targets which serve a similar purpose as runlevels but act a little different. Each target is named instead of numbered and is intended to serve a specific purpose with the pos原创 2014-10-06 13:11:01 · 2163 阅读 · 0 评论 -
linux内核编程
这些天在学习linux内核编程,就在这里小小的show以下。首先编写如下的linux代码。并命名为hello.c这里你应该注意亮点:第一、linux内核编程,不同于普通的用户态下的编程;有一个入口的main函数;这里的“main”函数是module_init();同时还有一个善后处理的函数:module_exit()。第二、linux内核编程在编译的时候,不同于用户原创 2015-03-15 15:43:54 · 1253 阅读 · 0 评论 -
Linux GCC常用命令
1简介GCC 的意思也只是 GNU C Compiler 而已。经过了这么多年的发展,GCC 已经不仅仅能支持 C 语言;它现在还支持 Ada 语言、C++ 语言、Java 语言、Objective C 语言、Pascal 语言、COBOL语言,以及支持函数式编程和逻辑编程的 Mercury 语言,等等。而 GCC 也不再单只是 GNU C 语言编译器的意思了,而是变成了 GNU Comp原创 2015-03-23 10:36:12 · 1176 阅读 · 1 评论 -
Ubuntu下GTK的安装、编译和测试
我利用此方法成功在UBUNTU 10.04下安装GTK 2.20.1。一、安装 1、安装gcc/g++/gdb/make 等基本编程工具$sudo apt-get install build-essential 2、安装 libgtk2.0-dev libglib2.0-dev 等开发相关的库文件$sudo apt-get install gnome原创 2015-04-01 22:26:29 · 1734 阅读 · 0 评论 -
Ubuntu下安装最新版本的CMake
本文采用Binary distributions的安装方式:在链接:http://www.cmake.org/download/下载cmake-3.3.0-rc2-Linux-x86_64.tar.gz二进制分发包,在Linux下通过 tar -zxvf cmake-3.3.0-rc2-Linux-x86_64.tar.gz命令进行解压。 Ubuntu自带的apt-get原创 2015-06-19 23:00:54 · 4416 阅读 · 1 评论 -
shell脚本实现俄罗斯方块
draw 是画出图形界面 keytest是获取键盘 tetris是整个游戏tetris.sh#!/bin/bashAPP_NAME="${0##*[\\/]}"APP_VERSION="1.0"#颜色定义iSumColor=7 #颜色总数cRed=1 #红色cGreen=2 #绿色cYellow=3 #黄色cBlue=4 #蓝色cFuc原创 2015-05-14 22:27:15 · 5899 阅读 · 1 评论 -
linux下TCP/IP实现简单聊天程序
可以在同一台电脑上运行,在一个终端上运行服务器端,在一个终端上运行客户端。服务器端的IP地址要和本地的IP相同,并分配端口号,客户端的默认设置为本地,端口号自动分配。服务器端:#include #include #include #include #include #include #include #include #include #include原创 2015-05-16 12:20:04 · 4333 阅读 · 0 评论 -
消息队列实现即时通讯
发送端和接收端都可以发送和接收信息,只是发送和接收消息的类型不同,一个是1,一个是2.具体代码如下://发送端#include#include#include#include#includestruct msgbuf{ int type;char ptr[0];};int main(int argc,char *argv[]){ key_t key;key=ftok(argv原创 2015-05-13 22:28:39 · 3383 阅读 · 0 评论 -
Linux 下系统调用的三种方法
系统调用(System Call)是操作系统为在用户态运行的进程与硬件设备(如CPU、磁盘、打印机等)进行交互提供的一组接口。当用户进程需要发生系统调用时,CPU 通过软中断切换到内核态开始执行内核系统调用函数。下面介绍Linux 下三种发生系统调用的方法:通过 glibc 提供的库函数glibc 是 Linux 下使用的开源的标准 C 库,它是 GNU 发布的 libc 库,即运原创 2015-04-28 13:02:42 · 1257 阅读 · 0 评论 -
Linux设备驱动中的阻塞与非阻塞IO与并发控制
Linux设备驱动中的阻塞与非阻塞IO:1.Linux设备驱动中的阻塞与非阻塞总结:http://m.blog.youkuaiyun.com/blog/dongteen/172645012.Linux设备驱动中的阻塞与非阻塞IO:http://m.blog.youkuaiyun.com/blog/dongteen/172645013.Linux设备驱动中的阻塞与非阻塞I/O实例原创 2015-04-28 13:23:20 · 1244 阅读 · 0 评论