
LINUX环境编程
习惯就好zz
一个无趣的人
展开
-
vim替换和查找
vim搜索和替换学习原创 2022-11-28 09:37:30 · 3544 阅读 · 0 评论 -
vim使用宏简单记录
一、基本使用q[a-z]开始录制宏q停止录制@[a-z]使用宏@@调用最近使用的宏22@[a-z]多次重放宏二、宏的执行方式串行方式:5@[a-z]宏内包含向下一个目标行进行移动的指令,如果出现错误,宏会停止执行并行方式::normal @[a-z]在高亮区域的每一行上并行执行宏,某一行出现错误不影响其他行...原创 2022-02-22 13:48:24 · 351 阅读 · 0 评论 -
dpkg –get-selections显示标记为“deinstall”的包
dpkg –get-selections显示标记为“deinstall”的包转载 2021-09-30 09:58:59 · 689 阅读 · 0 评论 -
网络并发服务器设计
一、问题描述TCP编程学习中,当打开tcp_server后,同时打开一个tcp_client不运行。再打开一个tcp_client发送数据后。tcp_server没有响应,因为tcp_server建立和第一个tcp_client的连接后,一直在等待它的数据(阻塞状态)。为了解决这个问题,我们需要创建子进程来接受数据,而父进程只要一直建立连接就行了。这样就能不断的处理数据了。二、原创 2017-08-15 09:06:12 · 198 阅读 · 0 评论 -
chroot()使用
好多的程序,都有使用chroot来是程序chroot到一个目录下面,来保护文件系统,今天在看snort代码的时候,看到了实现,就贴出一个测试程序来,实际上是比较简单的。 chroot()在linux下面需要使用root权限,这一点需要注意了。 #include#include#includeint main(void){ char chroot_path[] = "/tmp";原创 2017-08-15 09:11:58 · 931 阅读 · 0 评论 -
信号量的互斥与同步
一、信号量互斥公示栏问题:同学A在公示栏上写“数学课取消”,同学B然后又写了“英语课考试”。但是当,同学A写下“数学课”后。出去了一下,这是同学B写了“英语课考试”,同学A再回来写“取消”。这时我们所要传达的意思就完全不一样了。所以需要引入互斥。1. 信号量信号量(又名:信号灯)与其他进程间通信方式不大相同,主要用途是保护临界资源(进程互斥)。进程可以根据它判定是否能够访原创 2017-08-15 09:05:43 · 1695 阅读 · 0 评论 -
tcgetattr学习
一、函数名称:int tcgetattr(int fd, struct termios *termios_p); 二、函数功能: The termios functions describe a general terminal interface that is provided to control asynchronous communications ports原创 2017-08-15 09:11:36 · 4067 阅读 · 0 评论 -
Linux网络编程协议
一、网络协议1.网络模型OSI参考模型:应用层、表示层、会话层、传输层、网络层、数据链路层、物理层TCP/IP参考模型(Linux):应用层、传输层、网络层、网络接口层2.协议分析 3.以太网协议格式4.TCP协议格式5.UDP协议格式二、网络编程模型1.Socket的实质就是一个接口, 利用该接口,用户在使用不同的网络协议时原创 2017-08-15 09:05:55 · 230 阅读 · 0 评论 -
消息队列编程
1.基本概念消息队列就是一个消息的链表。而一条消息则可看作一个记录,具有特定的格式。进程可以向中按照一定的规则添加新消息;另一些进程则可以从消息队列中读走消息。第9类 消息队列编程 9.1 创建/打开消息队列 9.1.1 函数名 Msgget 9.1.2 函数原形 Int msgget(key_t key, int msgflg原创 2017-08-15 09:05:49 · 243 阅读 · 0 评论 -
多线程互斥和同步
一、线程互斥1.线程概念线程就是“轻量级”的进程。线程与创建它的进程共享代码段,数据段。线程拥有自己独立的栈。2.函数学习创建线程:int pthread_create(pthread_t *thread, const pthread_attr_t *attr, void *(*start_routine) (void *), void *arg);头文件: 编原创 2017-08-15 09:05:52 · 208 阅读 · 0 评论 -
atexit函数学习
函数名: atexit 头文件:#include 功 能: 注册终止函数(即main执行结束后调用的函数) 用 法: void atexit(void (*func)(void)); 注意:exit调用这些注册函数的顺序与它们 登记时候的顺序相反。同一个函数如若登记多次,则也会被调用多次。 #include stdio.h>原创 2017-08-15 09:11:40 · 328 阅读 · 0 评论 -
共享内存通信
1.基本概念共享内存是IPC机制中的一种. 顾名思义,它允许两个不相关的进程访问同一段内存这是传递数据的一种非常有效的方式。2.函数学习第10类 共享内存编程 10.1 创建/获取共享内存 10.1.1 函数名 shmget 10.1.2 函数原形 int shmget(ket_t key, size_t size, in原创 2017-08-15 09:05:46 · 256 阅读 · 0 评论 -
stat函数学习
函数名: stat() 功 能: 得到文件的信息,将其保存在buf结构中,buf的地址以参数形式传递给stat。 用 法: int _stat(const char *path,struct _stat *buffer) 参数: const char *path: 文件名或者目录名 struct _stat *buffer:结构体对象地址原创 2017-08-15 09:11:51 · 1354 阅读 · 1 评论 -
sigaction函数学习
sigaction(查询或设置信号处理方式)相关函数 signal,sigprocmask() ,sigpending,sigsuspend, sigemptyset 表头文件 #include 定义函数 int sigaction(int signum,const struct sigaction *act ,struct sigaction *oldact);原创 2017-08-15 09:11:48 · 280 阅读 · 0 评论 -
TCP/UDP socket编程学习
一、SOCKET编程创建一个传输终端:socket函数原型:int socket(int domain, int type, int protocol);头文件:sys/types.h sys/socket.h成功:返回新的socket文件描述符 失败:-1domain:协议类型type:socket类型protocol:选择特定协议,默认为0.绑定地址(绑定原创 2017-08-15 09:05:58 · 337 阅读 · 0 评论 -
getcwd函数学习
getcwd 函数原型:char *getcwd( char *buffer, int maxlen ); 功 能:获取当前工作目录 参数说明:getcwd()会将当前工作目录的绝对路径复制到参数buffer所指的内存空间中,参数maxlen为buffer的空间大小。 返 回 值:成功则返回当前工作目录,失败返回 FALSE。 在某些 U原创 2017-08-15 09:11:54 · 1882 阅读 · 0 评论 -
linux应用编程学习(6)信号
一、信号:在Linux系统中,信号(signal)同样也是最为古老的进程间通信机制。二、信号处理流程:①选择信号②发送信号③处理信号三、信号类型:Linux系统支持的所有信号均定义在/usr/include/asm/signal.h(展示),其中常见的信号有: SIGKILL: 杀死进程 SIGSTOP:暂停进程 S原创 2017-08-15 09:05:40 · 284 阅读 · 0 评论 -
静态函数库、动态链接库设置
一、外部函数Linux应用程序设计中需要的外部函数主要由函数库和系统调用来提供。二、函数库分类静态链接库动态链接库三、函数库-存放位置Linux应用程序使用的主要函数库均存放于/lib, /usr/lib目录下,其中采用*.so.*方式命名的是动态函数库,而以*.a方式命令的是静态函数库。四、静态链接库-特点程序所要用到的库函数代码在链接时全部被copy原创 2017-08-15 09:05:37 · 279 阅读 · 0 评论 -
Linux应用程序地址布局
一、程序构成在学习Linux应用程序开发时,经常会遇到如下概念:代码段、数据段、BSS段(Block Started by Symbol,又名:未初始化数据段) 、堆(heap)和栈(stack)。而这些部分也是构成Linux应用程序的重要组成部分。二、内存布局1.从低地址到高地址分别为代码段、数据段、BSS段、堆、栈 2.堆向高内存地址生长 3.栈向低内存地原创 2017-08-15 09:05:34 · 279 阅读 · 0 评论 -
vim屏幕滚动笔记
屏幕滚动Ctrl-E:显示窗口向下移动一行,光标如果在最上面,就会往下移动一行,其他情况会保持在那一行。Ctrl-Y:显示窗口向上移动一行,光标如果在最下面,就会往上移动一行,其他情况会保持在那一行。Ctrl-D:窗口向下滚动N行,默认滚动窗口行数的一半。光标会在相对的行数位置(比如在窗口下的第二行,翻页后还在第二行)Ctrl-U:窗口向上滚动N行,默认滚动窗口行数的一半。光标会在相对的行数位置(比如在窗口下的第二行,翻页后还在第二行)Ctrl-F:窗口向下滚动N页。翻页内容比较多,光标会移动到原创 2021-09-07 09:10:23 · 480 阅读 · 0 评论 -
vimtutor学习笔记
lesson 1 SUMMARY 1. The cursor is moved using either the arrow keys or the hjkl keys. h (left) j (down) k (up) l (right)# 上下左右移动 2. To start Vim from the shell prompt type: vim FILENAME <ENTER># vim filename 打开文件 3原创 2021-09-05 20:12:04 · 152 阅读 · 0 评论 -
px30板子使用nfs文件挂载,无法写入的问题
尝试办法一:修改/etc/exports文件书写格式,有没有多个空格之类的。尝试办法二:创建文件夹出现如下提示mkdir: can't create directory 'test': Read-only file system使用命令mount rw -o remount /即可解决原创 2021-02-08 15:49:40 · 295 阅读 · 0 评论 -
Ubuntu只读文件系统修复方法
首先备份重要数据fsck.ext4 -p /dev/sdb5reboot像pro的机器,就用fsck.ext4 -p /dev/mmblk0p7原创 2021-02-04 09:11:01 · 1461 阅读 · 0 评论 -
不可睡眠锁:RCU read-copy-updat
RCU(Read-Copy Update),顾名思义就是读-拷贝修改,它是基于其原理命名的。对于被RCU保护的共享数据结构,读者不需要获得任何锁就可以访问它,但写者在访问它时首先拷贝一个副本,然后对副本进行修改,最后使用一个回调(callback)机制在适当的时机把指向原来数据的指针重新指向新的被修改的数据。这个时机就是所有引用该数据的CPU都退出对共享数据的操作。在定义需要使用r原创 2017-01-11 21:41:10 · 325 阅读 · 0 评论 -
qwt 6.1.0集成进Qt creator 2.8.1步骤
环境准备与文件编译 ·关于Qt 发现一个Qt正确安装的教程,非常棒!http://www.wikihow.com/Install-Qt-SDK-on-Ubuntu-Linux Qt版本是4.8.5,在http://qt-project.org/downloads页面下载这个链接Qt libraries 4.8.5 for Linux/X11 (230 MB原创 2017-01-11 21:39:10 · 289 阅读 · 0 评论 -
I2C接口
1.I2C协议 2条双向串行线,一条数据线SDA,一条时钟线SCL。 SDA传输数据是大端传输,每次传输8bit,即一字节。 支持多主控(multimastering),任何时间点只能有一个主控。 总线上每个设备都有自己的一个addr,共7个bit,广播地址全0. 系统中可能有多个同种芯片,为此addr分为固定部分和可编程部份,细节视芯片而定,看datasheet。1.1原创 2017-01-11 21:41:39 · 208 阅读 · 0 评论 -
控制寄存器(CR0,CR1,CR2,CR3)和CR4
http://blog.sina.com.cn/s/blog_4017fe890100gg51.htmlhttp://blog.sina.com.cn/s/blog_85998e38010122wq.htmlhttp://www.tyut.edu.cn/kecheng1/2008/site04/courseware/chapter2/2-5-2.html控制寄存器 (控制寄存器原创 2017-01-11 21:40:31 · 5774 阅读 · 0 评论 -
umask函数linux
#include "sys/types.h"#include "sys/stat.h"mode_t umask(mode_t cmask);umask函数为进程设置文件方式创建屏蔽字。unix中文件最大访问权限是0777, 即_rwxrwxrwx.如果讲umask函数设置为0111,那么用0777与0111(umask设置值)取异或操作得0666,即_rw_rw原创 2017-01-11 21:39:58 · 425 阅读 · 0 评论 -
load_elf_binary阅读(2)
/** Check to see if the section's size will overflow the* allowed task size. Note that p_filesz must always be* */if (BAD_ADDR(k) || elf_ppnt->p_filesz > elf_ppnt->p_memsz || elf_ppnt->p原创 2017-01-11 21:39:32 · 315 阅读 · 0 评论 -
load_elf_binary阅读(1)
static int load_elf_binary(struct linux_binprm *bprm, struct pt_regs *regs) { struct file *interpreter = NULL; /* to shut gcc up */ unsigned long load_addr = 0, load_bias = 0; int load_addr_原创 2017-01-11 21:39:30 · 602 阅读 · 0 评论 -
linux应用编程学习(4)多进程编程
四、多进程编程类 进程:进程是一个具有一定独立功能的程序的一次运行活动。进程特点:动态性、并发性、独立性、异步性进程状态:进程ID:进程ID(PID):标识进程的唯一数字。父进程的ID(PPID)。启动进程的用户ID(UID)。进程互斥:进程互斥是指当有若干进程都要使用某一资源时,但该资源在同一时刻最多允许一个进程使用,这时其他进程必须 等待,直到占原创 2017-01-11 21:38:07 · 226 阅读 · 0 评论 -
linux应用编程学习(3)库函数文件类
三、库函数文件类 库函数:基于C函数库的文件编程是独立于具体的操作系统平台的,不管是在Windows、Linux还是其他的操作系统中,都是使用这些函数。使用库函数进行程序设计可提高程序的可移植性。流:对于标准的C函数库,它们的操作都是围绕流来进行的。流是一个抽象的概念,当程序需要读取数据的时候,就会开启一个通向数据源的流,这个数据源可以是文件,内存,或是网络连接。类似的,当程序需原创 2017-01-11 21:38:04 · 222 阅读 · 0 评论 -
linux应用编程学习(2)系统调用文件类
二、 系统调用文件类 文件描述符:在中国,每一个成年的公民都会有一个身份证编号,它的本质就是一个数字,我们可以利用这个数字来标记这个公民。在Linux系统中,所有打开的文件也对应一个数字,这个数字由系统来分配,我们称之为:文件描述符。 2.1.打开文件: int open(const char *pathname,int flags);原创 2017-01-11 21:37:54 · 246 阅读 · 0 评论 -
linux应用编程学习(1)时间类
一、时间类 时间类型:Coordinated Universal Time(UTC):世界标准时间,也就是大家所熟知的格林威治标准时间(Greenwich Mean Time,GMT)。 Calendar Time:日历时间,是用“从一个标准时间点(如:1970年1月1日0点)到此时经过的秒数”来表示的时间。1.1.获取日历时间原创 2017-01-11 21:37:51 · 236 阅读 · 0 评论 -
系统函数学习
#include #include #include #include void main(int argc,char **argv) { int fd_s; int fd_t; char buf[512]; int count =0; /*打开文件*/ fd_s = open原创 2017-01-11 21:37:48 · 198 阅读 · 0 评论 -
linux内核 asmlinkage宏
asmlinkage是个宏,使用它是为了保持参数在stack中。看一下/usr/include/asm/linkage.h里面的定义:#define asmlinkage CPP_ASMLINKAGE __attribute__((regparm(0)))其中 __attribute__是关键字,是gcc的C语言扩展。__attribute__机制是GNU C的一大特色,它可以设置函数属性、变量属原创 2017-01-11 21:40:36 · 187 阅读 · 0 评论 -
android编译环境配置总结
1、安装jdk1.6 点击(此处)折叠或打开 chmod u+x jdk-6u45-linux-x64.bin ./jdk-6u45-linux-x64.bin sudo mv jdk1.6.0_45 /opt 然后配置环境原创 2017-01-11 21:40:39 · 368 阅读 · 0 评论 -
linux应用编程学习(5)管道
第5类 管道通讯编程类一、通讯目的1、数据传输 一个进程需要将数据发送给另一个进程。 2、资源共享 多个进程之间共享同样的资源。 3、通知事件 一个进程需要向另一个/组进程发送消息,通知它们发生了某事件。 4、进程控制 有些进程希望完全控制另一个进程的执行(如Debug进程),此时 控制进程希望能够原创 2017-01-11 21:40:42 · 284 阅读 · 0 评论 -
简单字符驱动程序mycdev_globalmem.c
[root@bogon 桌面]# gedit mycdev_globalmem.c#include #include #include #include #include #include MODULE_AUTHOR("Me");MODULE_LICENSE("GPL");#define GLOBALMEM_SIZE 0x1000#define GLOBALMEM_MAJOR 256static原创 2017-01-11 21:41:24 · 278 阅读 · 0 评论 -
(一)洞悉linux下的Netfilter&iptables:什么是Netfilter?
本人研究linux的防火墙系统也有一段时间了,由于近来涉及到的工作比较纷杂,久而久之怕生熟了。趁有时间,好好把这方面的东西总结一番。一来是给自己做个沉淀,二来也欢迎这方面比较牛的前辈给小弟予以指点,共同学习,共同进步。 能在CU上混的人绝非等闲之辈。因此,小弟这里说明一下:本系列博文主要侧重于分析Netfilter的实现机制,原理和设计思想层面的东西,同时从用户态的iptables到内核原创 2017-01-11 21:41:22 · 215 阅读 · 0 评论