
Linux
文章平均质量分 76
qq_33417547
我是陕西人
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Makefile解析和简单的进度条实现
make和makefile简介:make:是一个非常重要的编译命令,本质上它是一个程序。利用make工具,可以将大型的开发项目分解成为多个更易于管理的模块,对于一个包括几百个源文件的应用程序,使用make和makefile工具就可以简洁明快地理顺各个源文件之间纷繁复杂的相互关系。而且如此多的源文件,如果每次都要键入gcc命令进行编译的话,那样会变的很麻烦。而make工具则可自动完成编译原创 2017-01-03 14:05:20 · 1140 阅读 · 0 评论 -
死锁及如何避免死锁
所谓死锁:是指两个或两个以上的进程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死锁进程。由于资源占用是互斥的,当某个进程提出申请资源后,使得有关进程在无外力协助下,永远分配不到必需的资源而无法继续运行,这就产生了一种特殊现象死锁。虽然进程在运行过程中,可能发生死锁,但死锁的发生也必须原创 2017-07-23 16:19:19 · 661 阅读 · 0 评论 -
文件描述符
什么是文件描述符在linux下一切皆文件,文件描述符是内核为了高效的管理已经被打开的文件所创建的索引,它是一个非负整数,用于指代被打开的文件,所有执行I/O操作的系统调用都是通过文件描述符完成的。 在linux中,进程是通过文件描述符(file descriptors 简称fd)来访问文件的,文件描述符实际上是一个整数。在程序刚启动的时候,默认有三个文件描述符,分别是:0(代表标准输入),原创 2017-06-03 20:26:27 · 8120 阅读 · 0 评论 -
进程的状态
Linux进程状态:R (TASK_RUNNING),可执行状态。只有在该状态的进程才可能在CPU上运行。而同一时刻可能有多个进程处于可执行状态,这些进程的task_struct结构(进程控制块)被放入对应CPU的可执行队列中(一个进程最多只能出现在一个CPU的可执行队列中)。进程调度器的任务就是从各个CPU的可执行队列中分别选择一个进程在该CPU上运行。Linux进程状态:S (TA原创 2017-06-03 10:41:57 · 697 阅读 · 0 评论 -
task_struct(进程描述符)
进程是一个正在执行的程序。 进程是程序的一个运行实例。 进程能分配处理器并由处理器执行的实体。 如果从内核的角度看的话:进程是分配系统资源的单位。当一个程序被加载到内存之后并为他分配一个PCB(进程控制块),这时候就称为进程了。在linux中PCB就是一个名字叫做task_struct的结构体,我们叫他”进程描述符”。它里面有进程执行的所有信息,所以CPU对task_struct进行管原创 2017-05-29 09:51:47 · 683 阅读 · 0 评论 -
进程与线程的区别
最近学到操作系统,觉得很有必要把进程与线程的概念搞清楚。首先我们先从大的方面谈谈cpu——进程——线程:cpu是计算机的核心,他承担了计算机所有的任务。单个cpu只能运行一个任务。进程是一个动态概念,它代表cpu所能处理的单个任务。cpu总是运行一个进程,当一个进程运行时,其他的进程就处于非运行状态。一个进程里可以有多个线程,一个进程的内存空间是共享的,意思就是所有的线程可以共享这块内存空原创 2017-05-29 09:04:18 · 829 阅读 · 0 评论 -
shell中的命令替换
在shell中有(反单引号) ` 和 $() 两种命令替换:例如:那么我们就来讨论一下这两个的区别。在多层次的复合替换命令中,倒引号需要加”\”转义,$()则不需要。例如:原创 2017-03-24 23:05:58 · 397 阅读 · 0 评论 -
linux 命令之eval
linux的eval命令用于重新运算求出参数的内容。用法:eval command-line其中command-line是在终端上键入的一条普通命令行。然而当在它前面放上eval时,其结果是shell在执行命令行之前扫描它两次。例如:eval还可以取的最后一个参数:使用eval可以创建一个类似于“指针变量”的变量:原创 2017-03-24 22:52:51 · 269 阅读 · 0 评论 -
可重入函数与线程安全的区别
线程安全:一个函数被称为线程安全的(thread-safe),当且仅当被多个并发进程反复调用时,它会一直产生正确的结果。如果一个函数不是线程安全的,我们就说它是线程不安全的(thread-unsafe)。我们定义四类线程不安全函数:第1类:不保护共享变量的函数将这类线程不安全函数变为线程安全的,相对比较容易:利用像P和V操作这样的同步操作来保护共享变量。这个方法的优点是原创 2017-02-24 10:55:36 · 812 阅读 · 0 评论 -
linux下设置定时任务(crond,crontab)
首先介绍一下crond:crond 是linux下用来周期性的执行某种任务或等待处理某些事件的一个守护进程,与windows下的计划任务类似,当安装完成操作系统后,默认会安装此服务工具,并且会自动启动crond进程,crond进程每分钟会定期检查是否有要执行的任务,如果有要执行的任务,则自动执行该任务。Linux下的任务调度分为两类,系统任务调度和用户任务调度。系统任务调度原创 2017-02-28 13:16:30 · 525 阅读 · 0 评论 -
linux下如何使用gcc生成静态库和动态库
我们要想使用gcc来生成静态库和动态库,首先我们需要明白什么是静态库和动态库。本质上来说库是一种 可执行代码的二进制形式,可以被操作系统载入内存执行。linux中的库有两种:静态库和动态库(动态库又叫共享库)。两者最大的不同点在于两者代码被载入的时间不同。静态库:这类库的名字一般是"libxxx.a",利用静态库编译生成的文件比较大,因为在编译链接的时候静态库的原创 2017-02-18 20:46:30 · 604 阅读 · 0 评论 -
Linux文件的特殊权限之Sticky Bit (粘滞位,SBIT)
在linux下文件除了r,w,x这三个重要权限以外,还有一些特殊权限,比如:SUID,SGID,SBIT.这些都是文件的特殊权限。今天我们就来重点讨论一下SBIT这个权限。Sticky Bit(SBIT):粘滞位(Stickybit),或粘着位,是Unix文件系统权限的一个旗标。最常见的用法在目录上设置粘滞位,如此以来,只有目录内文件的所有者或者root才可以删除或移动该文件。如果原创 2016-12-31 10:25:22 · 1188 阅读 · 0 评论 -
linux下文件的查询(find,which,whereis,locate)
我们经常需要知道文件在哪里,才能对该文件进行一些修改或者其他的操作。有些软件的配置文件名字都一样,只是放的地方不同,我们需要找出他们的完整文件名,才能对他们进行操作。一,脚本文件名的查询:which(寻找“执行文件”)这个命令是根据PATH这个环境变量所规范的路径去查询“执行文件”的文件名。所以,他只是找出执行文件而已!which后面要接完整的文件名,如果加上-a,则可以列出所有的可以原创 2016-12-30 12:43:16 · 497 阅读 · 0 评论 -
Linux下文件的三个时间剖析及其修改
当我们在windows下创建一个文件打开他的属性我们就可以看得这个文件有三个时间,分别是创建时间,修改时间,访问时间。如下图所示:那么在Linux下的文件时间是什么样的,我们今天就来看一下。首先打开linux环境,创建一个文件,然后用 stat 命令。如下图:可以从上图看到系统为我们保存了这个文件的三个时间,分别是Access time、Modify time、Chan原创 2016-12-26 17:38:57 · 755 阅读 · 0 评论 -
grep,awk,sed简单用法
grepgrep是一种强大的文本搜索工具,他能使用正则表达式搜索文本,并把匹配的行统计出来。 命令:grep [选项] [–color=auto] ‘搜索字符串’ filename 常用参数: -c:统计符合条件的字符串出现的次数。 -E:支持扩展正则表达式。 -i:忽略字符大小写。 -n:在显示匹配到的字符串前面加上行号。 -v:显示没有”搜索字符串”内容的那一行。原创 2017-08-26 11:12:25 · 632 阅读 · 0 评论