Linux
zhuhuiyu_
一个在努力中的程序员!!!加油!!
展开
-
Shell部分10
1. 简单的两个数的相乘shell 脚本:2. #cross two number3. PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin4. export PATH5. 6. echo -e "Input two number!"7. read -p "First原创 2016-11-27 20:53:41 · 252 阅读 · 0 评论 -
Shell部分12
1. [] :判断符号2. [ -z “$PATH” ]; echo $? 测试PATH内容是否为空,参数仿照test命令的3. 注意:1)中括号中的两边需要有空格隔开,不然会出错;4. 2)中括号以内的每个组件需要用空格分隔;5. 3)中括号内的变量最好用双引号括起来;6. 4)中括号中的常量以单或双引号括起来。7. [ “$name” == “Zhan原创 2016-11-29 22:45:21 · 241 阅读 · 0 评论 -
Shell部分2
1. 命令别名:alias lm=’ls –l| more’,这样,输入lm命令的时候,就有后面的一串命令的作用。可以使用unalias进行取消设置。2. 历史命令:history,显示之前使用过的命令。 History 4 显示最新的四个命令。3. 命令的查找顺序:一般的命令运行顺序可以如下1)以相对/绝对路径执行的命令(/bin/ls),最为优先。 2)由alias别名定原创 2016-11-19 21:11:02 · 221 阅读 · 0 评论 -
Shell部分14
1. Case...in...esac状态判断2. #!/bin/bash3. #Program:4. # test the case_in_esac5. #2016/11/246. #7. PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin8.原创 2016-12-01 19:15:09 · 237 阅读 · 0 评论 -
Linux启动
1. 磁盘2. 主引导分区(Master Boot Record):可以安装引导加载程序的地方,有446byte。3. 分区表(partition table):记录整块硬盘分区的状态,64byte。4. BIOS:是一个韧体,是一个写入到硬件上的一个软件程序。5. 开机流程:1)上电启动BIOS(开机时主动执行的第一个程序); 2)BIOS分析计算机里有哪些存储设备原创 2016-11-15 19:56:22 · 276 阅读 · 0 评论 -
Shell部分总结1
1. Shell2. Wc 统计文件中的行或者字或者字符 -l 列出多少行 -w 列出英文单词个数 -m 多少字符3. (管道前的内容) | grep –c ‘hello’ 计算管道前内容中找到的字符串次数,单纯统计 -i 忽略大小写的不同 -n 顺便输出行号4. 变量的定义:直接在命令行中输入 MYNAME=ZTL,就可以设置一个变量名为MYNAME,内容为原创 2016-11-18 22:30:46 · 213 阅读 · 0 评论 -
Shell部分13
1. 条件判断式if ...;then.... elif... ;then… elif…then… else….then fi2. #!/bin/bash3. #Program:4. # testthe if then elif5. #2016/11/246. #7. 8. PATH=/bin:/sbin:/usr/bin:/us原创 2016-11-30 19:55:20 · 227 阅读 · 0 评论 -
Linux的目录结构和文件分类
1. Linux的目录结构:2. /bin :存放提供给用户使用的完成基本维护任务的命令。3. /boot :存放Linux启动时使用的一些核心文件。4. /dev:包含所有系统设备文件。5. /etc:包含系统和应用软件的配置文件6. /home:存储普通用户的个人资料。7. /lib :存放基本的共原创 2016-11-14 23:00:24 · 514 阅读 · 0 评论 -
Linux下Shell的管道及命令
1. 管道命令: | 管道命令只能执行前一个命令的standard output 而不能接收 standard error output2. Cut:选取命令,切出信息中的一段。-d:后面接分割字符,根据分割字符,分成数段,与-f一起使用,-f指明取出第几段。 -c:以字符的单位取出固定的字符区间。3. Cut使用范例:echo $PATH | cut –d ‘:’ –f 3,5原创 2016-11-17 22:42:41 · 731 阅读 · 0 评论 -
linux多线程
一、线程的特点线程是进程的一个执行流,是CPU调度和分配的基本单位。线程是程序运行的最小单位。线程不会影响到其它线程的运行。比如一个线程崩溃,其它线程正常运行。同一进程内的线程共享进程的地址空间。二、一个线程的组成一个指向当前被执行指令的指令指针一个栈空间一个寄存器值的集合一个私有的数据区三、使用线程的优点同一进程下的多线程共享地址空间,减少的资源的浪费。线程间方便的通信机制。因为线程共享数据空间,转载 2016-11-01 23:31:16 · 238 阅读 · 0 评论 -
Shell部分3
1. 命令别名:alias lm=’ls –l| more’,这样,输入lm命令的时候,就有后面的一串命令的作用。可以使用unalias进行取消设置。2. 历史命令:history,显示之前使用过的命令。 History 4 显示最新的四个命令。3. 命令的查找顺序:一般的命令运行顺序可以如下1)以相对/绝对路径执行的命令(/bin/ls),最为优先。 2)由alias别名定原创 2016-11-20 22:16:07 · 233 阅读 · 0 评论 -
Shell部分16
1. 循环(loop)2. While do done (不定循环)3. #!/bin/bash4. #Program:5. # existuntil the user input yes6. 7. PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/原创 2016-12-03 20:14:04 · 204 阅读 · 0 评论 -
Shell部分4
1. 通配符:*表示0到无穷多个任意字符;?表示有一个任意字符; []表示一定有括号中字符中的任意一个字符; [-] 表示在一个范围中的字符会出现,例如[0-9]表示0-9之中的数字;[^]表示除开中括号以内的字符,可以存在。例如[^a-z]也就是除开小写字母。2. 数据流重定向 : 1)标准输入:代码0,使用 catfile(覆盖)和 >>(追加)输出到文件或者其他中,如果该文原创 2016-11-21 21:06:49 · 210 阅读 · 0 评论 -
Shell部分9
1. Shell Script2. Shell 脚本是纯文本文档,第一行的#!/bin/bash 用于声明,这个文件内的语法使用bash的语法。 其余的#都是注释。 3. *********************************************************************4. 使用touch命令,在shell脚本下创建文件:原创 2016-11-26 23:25:52 · 183 阅读 · 0 评论 -
Shell部分8
1. awk适用于一行分成多个段,进行处理2. Last –n 5 | awk ‘{print $1 “\t” $3}’ 大括号里面输入命令,做相应操作。$1表示第一列,$3表示第三列。3. 变量名:NF:每一行拥有的字段总数; NR:目前awk所处理的是第几行数据;FS:目前的分隔字符,默认是空格键。 例如:‘{print $1 NR “\t” $3 NF}’4.原创 2016-11-25 19:56:16 · 283 阅读 · 0 评论 -
STM32学习1
1. 学习STM32时,我准备的学习方法是,将网上下载下来的例程和模板进行学习,并不看视频了,因为有51的基础,所以看视频的话会有一点浪费时间。而且是使用库函数开发,底层部分在学习库函数时带着看看,反正后续会有ARM9的课,应该会有详细的讲解。2. 网上的模板是使用自己封装的函数和库函数.c文件,不使用keil提供的固件库,这样的好处是自己封装度较高,运用较为灵活,对各个stm32版本有良好的原创 2016-12-07 23:01:08 · 258 阅读 · 0 评论 -
Shell部分7
1. Printf2. Printf ‘%s %t %s%t %s%t’ $(cat config.txt) 格式化打印文件内容。3. Date4. Date命令时获得系统中的时间,在shell中使用该命令即可。5. date --date=’2 days ago’ +%Y%m%d ,这样就可以获得前天的时间,这里的’2 days ago’ 不是瞎写的,在da原创 2016-11-24 18:19:29 · 210 阅读 · 0 评论 -
makefile部分2
1. 变量:当出现重复的字串时,可以使用变量对其进行定义,在之后就直接使用变量就行,修改也显得方便很多。2. 范例:objects = main.o kbd.ocommand.o display.o \insert.osearch.o files.o utils.oedit: $(objects) cc-o edit $(objects)3. 删除:c原创 2016-12-06 22:07:14 · 277 阅读 · 0 评论 -
Shell部分6
1. Sed2. nl 列出文件内容,可以显示行号。3. Sed中的function功能:4. a:新增5. c:替换,后接字符串,替换n行内容。6. d:删除7. i:插入8. p:打印9. s:替换,直接进行替换工作。10. nl file.txt | sed ‘2,5d’ 显示的时候删除file.txt中的2-5行,’2,$d’删除2原创 2016-11-23 22:44:23 · 204 阅读 · 0 评论 -
makefile部分1
1. Makefile 《跟我一起写makefile》笔记2. 简单的Makefile规则组成:3. Target…: Prerequisites4. Command5. Target表示的是程序中间或者最后需要生成的文件名。6. Prerequisites 表示程序中,要生成这个target所需要的依赖,可以理解为源文件。7. Command 是原创 2016-12-05 21:07:44 · 220 阅读 · 0 评论 -
Shell部分5
1. 正则表达式:处理字符串的方法,它是以行为单位来进行字符串的处理行为,正则表达式通过一些特殊符号的辅助,可以让用户轻易达到查找、删除、替换某特定字符串的处理程序。 grep sed awk2. 语系差别:LANG=C时,0 1 2 3.........A B C D ......a b c d .......z;而LANG=zh_CN.UTF-8时,0 1 2 3.......原创 2016-11-22 19:13:52 · 244 阅读 · 0 评论 -
Shell部分17结束
1. For…do…done(固定循环)2. #!/bin/bash3. #Program:4. # testthe for5. 6. PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin7. export PATH8. 9. #outp原创 2016-12-04 22:15:41 · 245 阅读 · 0 评论 -
Linux下一些命令
1. Linux命令2. :20 跳转到20行3. :/abc 往后查找abc4. :?abc 往前查找abc5. 跳转到配对括号上: 光标移动到一个括号上,然后摁下%即可6. :!ls 调用外部命令7. –c : 编译或者汇编8. –E:预处理9. –S:编译10.原创 2016-11-13 22:22:56 · 223 阅读 · 0 评论 -
Linux 下的压缩
1. tar的使用范例 2. tar –jcv –ffile.tar.bz2 + 要被压缩的文件或者目录 说明:-j使用bzip2压缩,-c新建打包文件,-v显示正在处理的文件,-f要被输出成什么文件。3. tar –jtv –ffile.tar.bz2 查看打包文件中有哪些文件。 说明: -t 显示打包文件中有哪些文件4. tar –jxv –ffile.tar.原创 2016-11-16 21:38:50 · 207 阅读 · 0 评论 -
Linux 文件管理 不带缓冲区的I/O的操作
1.creat 函数的作用: 创建一个文件; 函数的原型: int creat(const char *pathname, mode_t mode); 文件头: #include #include #include 返回值:成功:新的文件描述符; 出错: -1 创建几个函数:file_原创 2016-10-16 22:20:44 · 406 阅读 · 0 评论 -
Linux UDP网络编程
用户数据报文协议(UDP): UDP 提供不可靠的非连接型传输层服务,它允许在源和目的地之间传送数据,而不必在传送数据之前建立对话。它主要用于那些非连接型的应用程序,如:视频点播UDP流程图:服务器代码:#include #include #include #include #include #include #defi原创 2016-11-06 21:15:24 · 264 阅读 · 0 评论 -
【linux】 linux下文件拷贝代码
linux下文件拷贝代码#include #include #include #include #include #include #define BUFF_SIZE 1024int main(int argc,char *argv[]){ int from_fp; int to_fp; char buffe原创 2016-10-15 23:34:21 · 1667 阅读 · 1 评论 -
linux TCP网络编程
网络编程有TCP编程协议,UDP编程协议。下面介绍TCP编程模型:概念:TCP是重要的传输层协议,目的是允许数据同网络上的其他节点进行可靠的交换。它能提供端口编号的译码,以识别主机的应用程序,而且完成数据的可靠传输TCP 协议具有严格的内装差错检验算法确保数据的完整性TCP 是面向字节的顺序协议,这意味着包内的每个字节被分配一个顺序编号,并分配给每包一个顺序编号。模型:原创 2016-11-05 23:27:37 · 285 阅读 · 0 评论 -
linux 使用共享内存实现生产者消费者,PV操作。
使用共享内存实现生产者消费者,PV操作。消费者的程序:#include #include #include #include #include #include #include #include #include #define BUF_SIZE 100union semun{ int val; struct原创 2016-10-24 23:11:29 · 2781 阅读 · 0 评论 -
守护进程
本文主要包括三个部分: 一是如何实现一个守护进程,二是如何检测一个进程是否活着,三是保证某一执行文件只有一个实例在运行。1.守护进程守护进程的最大特点就是脱离了中断,Linux提供了一个系统调用daemon(),要想自定义实现的话,主要包括以下六个步骤: 1.第一步是使用umask函数,把所有的文件屏蔽字置0。文件屏蔽字是可以继承的,当你有相关操作时,如果你要创建一个文件,转载 2016-10-23 00:37:46 · 220 阅读 · 0 评论 -
linux 多个用户对一个文件进行操作 文件锁和多路复用
①如果多个用户对一个文件进行操作的时候,如何解决,考虑用文件锁的形式和多路复用形式;1)文件锁找到一个函数flock()对文件进行加锁解锁等操作,就是在使用前对文件进行上锁,在使用后对文件进行解锁,这样就保证只有一个用户访问该文件。flock()表头文件 #include 定义函数 int flock(int fd,int operation);函数说明 floc原创 2016-10-21 23:15:14 · 1525 阅读 · 0 评论 -
两个线程交替打印ABCDEF
1. 线程交替打印2. #include 3. #include 4. pthread_mutex_t mu;5. char ch = 'A';6. void *mythread1()7. {8. int i = 0;9. for(i = 0;i 10. {11. if(pthread_mutex_lock(&mu)原创 2016-10-09 20:47:05 · 1351 阅读 · 0 评论 -
gcc 编译过程
gcc的编译过程被分为四个阶段 1预处理阶段预处理阶段将以#开头的命令,修改原程序。一共是3个,1头文件展开#include2条件编译#ifdef,#ifndf,#else,#endif3宏替换#define命令:Gcc -E test.c > test.i 2编译阶段 先检查代码是否规范,是否有语法错等然后将.i文件翻译成汇编语言。命令:Gcc -S tes原创 2016-07-09 15:47:31 · 301 阅读 · 0 评论 -
变量存储位置和堆栈的区别
写了个程序,看了下各种变量的存储位置:明显的看出全局变量还有static是存储在一起的,局部变量在一起,常数有自己的地方,malloc也是。从而可以知道虚拟地址空间的分配:栈空间存放局部变量,函数形参堆空间存放malloc,relloc,calloc分配空间、数据段里面有BSS区,rodate区,date区,BSS存放未初始化全局变量,rodate存放常量,原创 2016-10-17 13:39:19 · 803 阅读 · 0 评论 -
Linux TCP协议使用进程实现并发服务器
直接放代码:#include #include #include #include #include #include #define PORTNUM 3333int main(){ int sock_fd; int sock_fd_new; struct sockaddr_in my_addr; int addr原创 2016-11-07 21:34:42 · 298 阅读 · 0 评论 -
linux select函数用法
转载:http://blog.csdn.net/liujia2100/article/details/9004750?locationNum=1&fps=1Select可以监控多个文件句柄,监控文件内容的变化,比如可读可写状态的改变,利用select可以实现非阻塞而不会让线程挂起,提高系统的运行效率。比如可以同时 监控 键盘输入和鼠标输入,如果键盘有信号,可以去操作键盘转载 2016-10-27 22:25:10 · 1545 阅读 · 0 评论 -
Linux下软硬链接
1. 软链接:软链接又叫符号链接,这个文件包含了另一个文件的路径名。可以是任意文件或目录,可以链接不同文件系统的文件。软链接文件只是其源文件的一个标记,当删除了源文件后,链接文件不能独立存在,虽然仍保留文件名,但却不能查看软链接文件的内容了。软链接不直接使用inode号作为文件指针,而是使用文件路径名作为指针(软链接:文件名 + 数据部分-->目标文件的路径名)。软件有自己的inode,并原创 2016-11-12 22:06:05 · 362 阅读 · 0 评论 -
Shell部分11
1. 条件判断命令test2. Test –e /dmtasi && echo “exist”|| echo “No exist” 测试这个文件是否存在,使用判断表达式3. -a参数,表示两个测试条件均成立4. -o参数,表示两个测试条件中任意一个成立即可5. !参数,表示反向状态,取反的意思,!true->false6. #!/bin/bash7. #P原创 2016-11-28 19:11:16 · 337 阅读 · 0 评论 -
C语言的库的创建
1. 库2. 静态库:ar –rcsvlibXXX.a func1.o func2.o func3.o (- r:在库中插入模块(替换)。当插入的模块名已经在库中存在,则替换同名的模块。 -s :写入一个目标文件到库中 a – XXX.o 在库的最后添加一个新文件 v :显示信息 c:表示只编译,不链接)3. 静态库的使用:gcc main.c –o testMa原创 2016-11-11 19:57:42 · 1352 阅读 · 0 评论 -
linux C语言 数据库sqlite3的添加,删除,查看
linux下数据库sqlite3的添加,删除,查看。这个程序需要先在命令下创建表。程序:#include #include #include static sqlite3 *db = NULL;static char *errmsg = NULL;char ** result = NULL;int num = 0;int display(void原创 2016-10-30 22:06:01 · 1214 阅读 · 0 评论