10 2016 档案

摘要:条件变量是线程同步的另一种方式,实际上,条件变量是信号量的底层实现,这也就意味着,使用条件变量可以拥有更大的自由度,同时也就需要更加小心的进行同步操作。条件变量使用的条件本身是需要使用互斥量进行保护的, 线程在改变条件状态之前必须首先锁住互斥量 ,其他线程在获得互斥量之前不会察觉到这种改变,因为互斥 阅读全文
posted @ 2016-10-30 09:02 Abnor 编辑
摘要:& 执行程序的后面加 可以将程序转到后台(这个后台是当前会话的后台,并不是守护进程)执行,即 ,这样我们在打开诸如 的时候可以写成 以防止它占用终端。后台进程也叫后台作业,执行后台进程的时候会有一个后台作业的编号: jobs 用来查看当前会话的后台作业(后台进程组): fg 可以将后台进程变成前台进 阅读全文
posted @ 2016-10-29 08:39 Abnor 编辑
摘要:我们在使用 "$top" 的时候有一列NI参数,这个参数就是进程的nice值,用来表示进程在系统调度中的优先级,Linux中的进程nice从 20到+19,越小表明调度的优先级越高,用户进程的最小nice值就是0,比这个还要小的都是系统进程,非管理员不允许指定小于0的进程 `$nice n [新的n 阅读全文
posted @ 2016-10-29 08:06 Abnor 编辑
摘要:gdb是gnu下的一个调试器,内置的大量的用于调试程序的指令,使用 进入程序再使用 导入要调试的可执行文件或直接使用 断点相关 ||| |: |: | |break 行号/函数名|在指定行号或函数处设置断点,程序每次执行到断点处就会停止| |tbreak 行号/函数名|在指定行号或函数处设置临时断点 阅读全文
posted @ 2016-10-16 18:12 Abnor 编辑
摘要:两个隐含规则; 1. 将所有的 的依赖自动推导为 并使用规则 得到目标。这个规则中只有 是隐含规则中有的,后面两个变量是留给用户使用的,如果 不够用,可以通过设置他们来改变这条隐含规则,有了这条隐含规则,下面的写法是被允许的 2. 目标依赖于 ,其生成命令是: 。这个规则对于多个被依赖的目标文件同样 阅读全文
posted @ 2016-10-15 22:35 Abnor 编辑
摘要:条件 if then elif then fi if的条件部分经常使用 或` " EXPRESSION ]`实现,test的用法可以参见[test" 举个栗子 输出结果: 选择 case esac case适合处理多个分支的情况 举个栗子: 执行结果: 循环 while do done 条件满足就执 阅读全文
posted @ 2016-10-14 22:54 Abnor 编辑
摘要:初学C语言都觉得main作为整个程序的入口函数是不需要传递参数的,但事实上,我们完全可以给main()传入参数进而控制整个程序的执行,就像我们使用DOS命令传入的参数一样,这里面 表示传入的参数的个数,包括命令本身。 是一个字符串数组,即每一个元素都是一个字符串(的首地址),命令本身是argv[0] 阅读全文
posted @ 2016-10-14 20:02 Abnor 编辑
摘要:sizeof关键字和strlen()标准函数都可以用来测试字符串的长度,但是两者有很大的不同 sizeof只能在 本函数内 , 使用 和 不指定长度的字符数组 中才能测出字符串的真实长度,当然,包括 strlen()任何情况下都能正确的得出字符串的字面值大小 在 本函数内 ,sizeof测试 的结果 阅读全文
posted @ 2016-10-14 19:45 Abnor 编辑
摘要:``` include int main(int argc, const char argv[]) { int a[3][4]={ {0,1,2,3}, {4,5,6,7}, {8,9,10,11}, }; for(int i=0;i 阅读全文
posted @ 2016-10-14 19:22 Abnor 编辑
摘要:既然是变量,自然分变量名和变量值,在使用的时候一定要注意哪些地方需要用变量名,哪些地方需要用变量的值。 自定义变量 shell变量不需要声明,随用随定义,给变量赋值的时候要注意 shell是空格敏感的 使用 确定变量的范围是个好习惯 位置变量 指shell脚本的命令参数,shell script将执 阅读全文
posted @ 2016-10-14 08:42 Abnor 编辑
摘要:测试文件headtail head 显示文件的前n行内容,缺省显示前10行 tail 显示文件后n行内容,缺省显示后10行 阅读全文
posted @ 2016-10-13 21:17 Abnor 编辑
摘要:文件描述符是相对进程而言的,一个文件可以有多个文件描述符,但只有一个inode,inode一样就是同一个文件,文件名不同也是同一个 硬链接 1. 两个文件是指向同一个存储区,inode号一样,并没有开辟新的空间, 2. 实质是普通文件。但并不开辟新的存储空间 3. 删除一个有硬链接的文件,并不会释放 阅读全文
posted @ 2016-10-13 21:07 Abnor 编辑
摘要:exit 退出当前用户 su 切换到指定用户,缺省表示切换到root用户 adduser 创建一个用户的时候其实是创建了一个用户和同名的用户组,它们都会UID,所属的GID,创建时一个用户属于和自己同名的用户组,可以更改一个用户所属的用户组,但是之前创建的同名用户组还会存在 $sudo adduse 阅读全文
posted @ 2016-10-13 21:01 Abnor 编辑
摘要:更改时区 用系统备好的时区文件覆盖掉当前的配置文件,/etc/里装的是当前系统的配置文件 date 查看或更改日期和时间 set=STRING,更改系统日期,月/日/年 更改系统时间 Note:更改时区会自动更改日期和时间,更改日期会自动更改时间,所以按照时区 日期 时间的顺序改 阅读全文
posted @ 2016-10-13 20:54 Abnor 编辑
摘要:关机命令 定时关机,以分钟为单位的计时,时间或now 立即关机 20分钟后关机 12点关机 立即重启 20分钟后重启 12点重启 取消关机/重启操作 阅读全文
posted @ 2016-10-13 20:47 Abnor 编辑
摘要:查看当前系统中当前登录的帐户 如果在tty7里 ,那么 不会识别root,需要在tty1里登录 ,就可以在任何终端里执行 查看到root用户 阅读全文
posted @ 2016-10-13 20:45 Abnor 编辑
摘要:将变量的值当作数值处理而不是字符串,shell支持6种算术运算符:加 , 减 ,乘 ,除 , 取余 , 括号 ,每种算术运算符的两边都要有空格 阅读全文
posted @ 2016-10-13 16:27 Abnor 编辑
摘要:从标准输入读入一行内容并以空格为分隔符赋值给变量,如果输入的内容过多,则把剩下的所有内容都赋值给最后一个变量 阅读全文
posted @ 2016-10-13 16:26 Abnor 编辑
摘要:df 查看当前系统中文件系统的使用情况 缺省选项查看当前系统的所有文件系统 列出所有的信息 列出文件系统类型 human readable,用合适的单位表示大小 mount 将设备添加挂载点,文件系统类型就是 输出的Type列,设备名就是Filesystem,挂在点就是目标挂在点,将出现在Mount 阅读全文
posted @ 2016-10-13 13:33 Abnor 编辑
摘要:cat VS tac cat是查看文本文件的内容,tac是cat反过来,反向查看文件 more 查看,扩展翻页,回车下一行,空格下一页,q退出 阅读全文
posted @ 2016-10-13 12:49 Abnor 编辑
摘要:subst字符串替换函数 ,把 字符串替换成``,返回被替换过的字符串 patsubst模式字符串替换函数 ,查找 ,符合的话,则以 可以包括通配符 表示任意长度的字符串,如果 %`, 则 %` 将是 %` 所代表的字符串 strip 把字符串去掉开头和结尾的空格,结果是 “a b c” finds 阅读全文
posted @ 2016-10-13 08:09 Abnor 编辑
摘要:自定义变量 是最基本的赋值,会把整个makefile展开之后再决定是多少 是覆盖之前的值,和=不同,和赋值的位置有关 是如果没有被赋值过就赋予等号后面的值,赋过了就不管了 是添加等号后面的值 变量的使用 和shell一样,makefile通过 来读取变量 的值,对于 本身,使用 读取 变量替换 注意 阅读全文
posted @ 2016-10-13 08:08 Abnor 编辑
摘要:@ makefile会把将要执行的命令行在命令执行前输出到屏幕上,使用 可以避免显示出命令本身 若 则`$make 正在编译…` 若 则`$make`显示: override 如果一个变量的值需要在编译选项中指定或由系统传入,那么makefile中可以使用override关键字来设置,使这个变量的赋 阅读全文
posted @ 2016-10-13 08:06 Abnor 编辑
摘要:目标 即我们最终要生成的文件,make默认生成第一个目标,注意 makefile中 和空格不是一回事,规则使用 缩进,编辑器不要设置诸如“将tab替换为空格之类的选项”,目标的结构如下 伪目标 无论如何也要执行的目标,需要使用 标识 常见伪目标 是所有目标的伪目标,功能是编译所有目标 删除所有被ma 阅读全文
posted @ 2016-10-13 07:39 Abnor 编辑
摘要:make会自动搜索当前目录下的 "makefile" 或 "Makefile" 文件进行编译,也可以通过 选项读取其他文件。 表示到dir指定的路径去搜索文件 表示读取指定的文件,常用在非标准makfile中,比如名为 默认是不会被识别的,需要使用此选项 进行伪编译,即演示编译过程,但不会真的去编译 阅读全文
posted @ 2016-10-13 07:37 Abnor 编辑
摘要:用来测试文件类型 列出辨识结果时,但不显示文件名称 如果文件是符号链接,那么直接解读其指向的文件 :如果文件是压缩文件,尝试去解读压缩文件的内容 阅读全文
posted @ 2016-10-12 22:02 Abnor 编辑
摘要:shell脚本有两种执行方式,一种是直接执行,一种是使用 或 命令执行 直接执行 直接执行shell脚本,bash会在当前bash下新建一个子bash进程用来执行shell脚本,此时脚本里定义的变量,并不会传会到父bash进程中 source或.执行 使用 来执行一个shell脚本表示使用当前bas 阅读全文
posted @ 2016-10-12 21:36 Abnor 编辑
摘要:ppa,即Personal Package Archives(个人软件包档案)是Ubuntu Launchpad网站提供的Synaptic服务(是Debian和Ubuntu Linux操作系统的包管理工具apt的图形化前端),允许个人用户上传软件源代码,通过Launchpad进行编译并发布为2进制软 阅读全文
posted @ 2016-10-12 20:40 Abnor 编辑
摘要:lsattr 查看文件的隐藏属性 chattr 设置文件隐藏属性 增加某一个特殊参数,其他原本存在的参数不动 删除某一个特殊参数,其他原本存在的参数不动 仅有后面接的参数 若访问此文件(或目录)时,它的访问时间atime将不会被修改,可避免I/O较慢的机器过度访问磁盘,这对速度较慢的计算机有帮助 S 阅读全文
posted @ 2016-10-12 20:06 Abnor 编辑
摘要:指定用户在新建文件或目录时候的权限默认值 阅读全文
posted @ 2016-10-12 19:59 Abnor 编辑
摘要:`$od [ t type]`查看非文本文件 使用默认字符输出 使用ASC II字符输出 使用十进制来输出数据,每个整数占用size byte 。。八 。。十六 。。浮点数 阅读全文
posted @ 2016-10-12 19:50 Abnor 编辑
摘要:`$init [0123456]`切换执行等级, 可以在/etc/initab/里查看详细介绍 停机(千万不能把initdefault 设置为0) 单用户模式 多用户,没有 NFS(和级别3相似,会停止部分服务) 完全多用户模式 没有用到 x11(Xwindow) 重新启动(千万不要把initdef 阅读全文
posted @ 2016-10-12 19:48 Abnor 编辑
摘要:`$sync` 数据同步写入磁盘 所有的数据都得要被读入内存才能够被CPU处理,由于内存和硬盘的速度差异问题,Linux默认的情况的是已经加载内存中的数据将不会被直接写入硬盘,而是暂存在内存之中,如此以来,如果一个数据被反复改写,而由于尚未被写入硬盘中,因此可以直接由内存当中读取出来,会很快 如果不 阅读全文
posted @ 2016-10-12 19:38 Abnor 编辑
摘要:`$wc [ lwc] filename`统计的文件的信息,缺省参数会按照lwc的顺序输出全部三种信息 统计文件的行数 统计文件的字数,字以空格和换行符分隔 统计文件的字符数,包括换行等 例子 阅读全文
posted @ 2016-10-12 18:30 Abnor 编辑
摘要:`history`用来显示最近执行的命令,系统中将当前的允许的最大保存的历史命令条数保存在环境变量HISTSIZE中,缺省选项时表示显示最多HISTSIZE个命令,可以指定显示最近的n条命令 显示最近的n条命令 清空history历史 将目前新增的指令添加到hisfile,若没有则新建hisfile 阅读全文
posted @ 2016-10-12 17:01 Abnor 编辑
摘要:dpkg是debian最早提出的一个软件包管理工具,因为早期并没有考虑到当下软件包之间这么复杂的依赖关系,所以并不能自动解决软件包的依赖问题,这个命令多用于安装本地的.deb软件包,也可以进行软件包的维护 安装一个软件包 查看软件包信息 查看软件包的安装路径 卸载软件,保留配置文件 卸载软件,同时删 阅读全文
posted @ 2016-10-12 16:16 Abnor 编辑
摘要:语法格式 表示是可选的部分,``表示是必要的部分 条件码 大部分ARM指令都支持条件执行,即满足某些条件的时候执行当前指令,同时,还配合有 位用来指示当前指令是否会映像CPSR相应的位。 | | | | | |: |: |: |: | |EQ| Equal| 相等| Z=1 | |NE| Noequ 阅读全文
posted @ 2016-10-12 08:44 Abnor 编辑
摘要:ARM支持9种寻址方式:立即数寻址,寄存器寻址,寄存器偏移寻址,寄存器间接寻址,基址变址寻址,多寄存器寻址,相对寻址,堆栈寻址,块拷贝寻址。 立即数寻址 将数据直接存放的指令中发给CPU,首先由于ARM的一条指令占了32bit,而操作码本身也要占据一些位,所以留给立即数的位数肯定不到32bit,其次 阅读全文
posted @ 2016-10-12 08:37 Abnor 编辑
摘要:工作模式_ufisaus |USR|FRQ|IRQ|SVC|ABT|UND|SYS| |: |: |: |: |: |: |: | |R0||||||| |R1||||||| |R2||||||| |R3||||||| |R4||||||| |R5||||||| |R6||||||| |R7|||| 阅读全文
posted @ 2016-10-12 08:35 Abnor 编辑
摘要:PV原子操作 P操作: 如果有可用的资源(信号量值 0),则此操作所在的进程占用一个资源(此时信号量值减1,进入临界区代码); 如果没有可用的资源(信号量值=0),则此操作所在的进程被阻塞直到系统将资源分配给该进程(进入等待队列,一直等到资源轮到该进程)。 V操作: 如果在该信号量的等待队列中有进程 阅读全文
posted @ 2016-10-11 19:22 Abnor 编辑
摘要:同步 同一个进程中的多个线程共享所在进程的内存资源,当多个线程在同一时刻同时访问同一种共享资源时,需要相互协调,以避免出现数据的不一致和覆盖等问题,线程之间的协调和通信的就叫做线程的同步问题, 线程同步的思路: 让多个线程依次访问共享资源,而不是并行 互斥VS同步 互斥:是指某一资源同时只允许一个访 阅读全文
posted @ 2016-10-11 19:20 Abnor 编辑
摘要:概念 原来指向main()的线程叫做主线程(main thread) 使用pthread_create()创建出来的线程,叫做子线程(child thread) 主/子线程只有在创建时才有区别, 创建完了就一视同仁, 都是一样的独立个体, 可以有交流、共享和私有, 但没有上下级, 这一点和多进程一样 阅读全文
posted @ 2016-10-11 19:18 Abnor 编辑
摘要:模型 socket() domain :协议族(protocol family)(网络通讯(IP)还是本地通讯(xxx.socket)) AF_INET 用于实现给予ipv4网络协议的网络协议 type :协议(TCP还是UDP) SOCK_DGRAM //数据报套接字, 实现包括但不限于UDP协议 阅读全文
posted @ 2016-10-11 19:16 Abnor 编辑
摘要:模型 socket() domain :协议族(protocol family)(网络通讯(IP)还是本地通讯(xxx.socket)) AF_INET 用于实现给予ipv4网络协议的网络协议 type :协议(TCP还是UDP) SOCK_STREAM //流式套接字, 实现包括但不限于TCP协议 阅读全文
posted @ 2016-10-11 19:15 Abnor 编辑
摘要:头文件 socket() domain :协议族(protocol family)(网络通讯(IP)还是本地通讯(xxx.socket)) AF_LOCAL 本地通讯/AF_UNIX/ AF_INET 用于实现给予ipv4网络协议的网络协议 AF_INET6 用于实现给予ipv6网络协议的网络协议 阅读全文
posted @ 2016-10-08 11:45 Abnor 编辑
摘要:模型 sem_open() oflag O_CREAT 如果信号量不存在就创建信号量,信号量的UID被设为调用进程的effective UID,GID被设为调用程序的GID,可以在mode指定权限 O_EXCL 和O_CREAT连用,确保可以创建新的信号量,如果已存在就报错 value :配合O_C 阅读全文
posted @ 2016-10-08 10:48 Abnor 编辑
摘要:模型: POSIX mq VS Sys V mq的优势 更简单的基于文件的应用接口 完全支持消息优先级(优先级最终决动队列中消息的位置) 完全支持消息到达的异步通知,这通过信号或是线程创建实现 用于阻塞发送与接收操作的超时机制 消息队列名 由 知:消息队列由一个形如'/somename'的名字唯一标 阅读全文
posted @ 2016-10-08 09:56 Abnor 编辑
摘要:模型 shm_open oflag Access Mode: O_RDONLY 以只读的方式打开共享内存对象 O_RDWR 以读写的方式打开共享内存对象 Opening time flags(Bitwise Or): O_CREAT 表示创建共享内存对象,刚被创建的对象会被初始化为0byte可以使用 阅读全文
posted @ 2016-10-08 08:28 Abnor 编辑
摘要:模型 ftok() pathname :文件名 proj_id : 1~255的一个数,表示project_id semget(): nsems : 信号量集的大小/信号量的个数,0表示获取已经存在的信号量集 semflg IPC_CREAT :若不存在则创建, 需要在msgflg中"|权限信息"; 阅读全文
posted @ 2016-10-07 15:56 Abnor 编辑
摘要:模型 ftok() pathname :文件名 proj_id : 1~255的一个数,表示project_id msgget() msgflg :具体的操作标志 IPC_CREAT 若不存在则创建, 需要在msgflg中"|权限信息"; 若存在则打开 IPC_EXCL 若存在则创建失败 0 获取已 阅读全文
posted @ 2016-10-07 13:25 Abnor 编辑
摘要:模型 ftok() pathname :文件名 proj_id : 1~255的一个数,表示project_id shmget() key :ftok()的返回值 size :共享内存的大小,实际会按照页的大小(PAGE_SIZE)来分配。0表示获取已经分配好的共享内存 shmflg :具体的操作标 阅读全文
posted @ 2016-10-07 11:38 Abnor 编辑
摘要:ipcs ipcs m 查看系统中已经存在的共享内存 shmid :共享内存的id perms :permission nattch :number attatch ipcs q 查看系统中现有的消息队列 used byte: 队列的大小 message : 队列中消息的条数 ipcs s 查看系统 阅读全文
posted @ 2016-10-07 10:23 Abnor 编辑
摘要:mkfifo() pathname :the FIFO special file's name mode :the FIFO's permissions. pipe() pipefd :return two fds referring to the ends of the pipe. pipefd[ 阅读全文
posted @ 2016-10-07 10:02 Abnor 编辑
摘要:管道是Linux的十种文件类型之一,使用管道通信本质上还是以文件作为通信的媒介 有名管道+无名管道=管道 有名管道(FIFO文件):就是 有文件名的管道, 可以用于任意两个进程间的通信 无名管道(pipe文件):就是没有文件名的管道, 只能用于父子进程之间的通信 mkfifo 创建有名管道,管道不能 阅读全文
posted @ 2016-10-07 09:39 Abnor 编辑
摘要:Linux中, 系统为每个系统都维护了三种计时器,分别为: 真实计数器, 虚拟计时器以及实用计时器, 一般情况下都使用真实计时器 getitimer()/setitimer() which //具体的计时器类型 1. ITIMER_REAL :真实计时器 统计进程消耗的真实时间 通过定时产生SIGA 阅读全文
posted @ 2016-10-07 00:12 Abnor 编辑
摘要:信号本质上就是一个软件中断,它既可以作为两个进程间的通信的方式, 更重要的是, 信号可以终止一个正常程序的执行, 通常被用于处理意外情况 , 信号是异步的, 也就是进程并不知道信号何时会到达 $kill 9 3390 向PID为3390的进程发送编号为9的信号= 一个两个进程间通信的方式之一 一共6 阅读全文
posted @ 2016-10-06 23:21 Abnor 编辑
摘要:向一个/一些进程发送一个信号 $kill [ slL] [...] 指定发送的信号,可以使用名称或者信号编号 列出当前系统的所有信号 阅读全文
posted @ 2016-10-06 21:00 Abnor 编辑
摘要:进程的状态 Linux进程有7种基础状态(两种running算一种),除了traced都可以用 命令查看, 可以查看的进程状态如下,更多进程状态信息参见 "Linux Process VS Thread VS LWP" R running or runnable (on run queue) D u 阅读全文
posted @ 2016-10-06 18:48 Abnor 编辑
摘要:ps 查看当前终端所启动的进程, 不加选项只查看当前终端的进程 ps aux 查看所有进程,ps aux是BSD syntax,ps aux是standard syntax, 但二者的意义完全不同= $man ps ps ef 以全格式的方式显示所有进程(every)查看当前终端所启动的进程, 不加 阅读全文
posted @ 2016-10-06 16:31 Abnor 编辑
摘要:mkdir() opendir()、fdopendir() readdir() telldir() seekdir() rewinddir() dirfd() closedir() rmdir() 阅读全文
posted @ 2016-10-06 14:58 Abnor 编辑
摘要:access() fstat()、stat()、lstat() 获取文件大小 1. fseek()把offset移到SEEK_END, 再用ftell()返回文件的大小 2. lseek() , 返回文件的大小 3. stat(), struct stat st; st.st_size的数值就是文件 阅读全文
posted @ 2016-10-06 14:31 Abnor 编辑
摘要:文件描述符(File Descriptor) a small, nonnegative integer for use in subsequent system calls (read(2), write(2), lseek(2), fcntl(2), etc.) ($man 2 open). 一个 阅读全文
posted @ 2016-10-06 13:47 Abnor 编辑
摘要:MMU MMU=Segmentation Unit+Paging Unit //MMU: Memory Management Unit logical address = Segmentation Unit= linear address = Paging Unit= physical addres 阅读全文
posted @ 2016-10-06 10:14 Abnor 编辑
摘要:||| |: |: | | 高地址 |命令行参数信息,环境表信息| |:|栈Stack for thread 0:一个线程一个私有栈 |:|栈里的栈帧Stack Frame 0:一个函数里的局部变量一个栈帧 |:|栈里的栈帧Stack Frame 1:设这个是fcn(),依次将BACD压入栈 |:| 阅读全文
posted @ 2016-10-06 09:54 Abnor 编辑