linux
文章平均质量分 75
一个字节
dare try
展开
-
linux的粘滞位
什么是粘滞位?粘滞位(Sticky bit),或粘着位,是linux文件系统的特殊权限!最常见的用法在目录上设置粘滞位,如此以来,只有目录内文件的所有者或者root才可以删除或移动该文件。如果不为目录设置粘滞位,任何具有该目录写和执行权限的用户都可以删除和移动其中的文件。 实际应用中,粘滞位一般用于/tmp目录,以防止普通用户删除或移动其他用户的文件。原创 2017-03-29 13:54:23 · 415 阅读 · 0 评论 -
浅析exit()和atexit()函数
当内核使用一个一个exec函数执行c程序时,在调用main函数之前先调用一个特殊的启动例程,可执行程序需将此例程指定为程序的起始地址。启动例程从内核获取命令行参数和环境变量,然后为调用mian函数做好准备。原创 2017-04-17 22:07:51 · 13388 阅读 · 4 评论 -
浅析进程和task_struct
首先我们得了解什么是进程和task_struct,下面我们先看看进程的概念: 进程是程序一次动态的执行过程(程序一般是以物理文件的形式储存在硬盘等存储媒介中),进程可以看成是在内存中正在运行的程序。进程=程序段+数据段+进程控制块(看下文)。 进程的信息保存在进程控制块(PCB),linux下的PCB----task_struct原创 2017-04-16 14:39:33 · 880 阅读 · 0 评论 -
linux下gcc或Makefile报错:cannot find -lc
**在使用gcc编译或写Makefile时报错如下: /usr/bin/ld: cannot find -lccollect2:ld returned 1 exit status我们只需要: .在linux中用yum下载安装glibc和libstdc++的静态库sudo yum install glibc-static libstdc++-static原创 2017-07-30 21:32:49 · 1623 阅读 · 0 评论 -
linux下的软硬链接及其inode
文件都有文件名与数据,在 Linux 上被分成两个部分:用户数据 (user data) 与元数据 (metadata)。用户数据,即文件数据块 (data block),数据块是记录文件真实内容的地方;而元数据则是文件的附加属性,如文件大小、创建时间、所有者等信息。转载 2017-08-02 22:33:11 · 395 阅读 · 0 评论 -
linux下的压缩与解压缩命令(tar)
tar-c: 建立压缩档案-x:解压-t:查看内容-r:向压缩归档文件末尾追加文件-u:更新原压缩包中的文件这五个是独立的命令,压缩解压都要用到其中一个,可以和别的命令连用但只能用其中一个。下面的参数是根据需要在压缩或解压档案时可选的。-z:有gzip属性的-j:有bz2属性的-Z:有compress属性的-v:显示所有过程-O:将文件解开到标准输出转载 2017-08-10 12:18:44 · 233 阅读 · 0 评论 -
进程、线程、内存池及实现简易线程池
池的概念由于服务器的硬件资源“充裕”,那么提高服务器性能的一个很直接的方法就是以空间换时间,即“浪费”服务器的硬件资源,以换取其运行效率。这就是池的概念。池是一组资源的集合,这组资源在服务器启动之初就完全被创建并初始化,这称为静态资源分配。当服务器进入正式运行阶段,即开始处理客户请求的时候,如果它需要相关的资源,就可以直接从池中获取,无需动态分配。原创 2017-08-11 13:52:39 · 299 阅读 · 0 评论 -
编写一个简单的进程池
池的概念 由于服务器的硬件资源“充裕”,那么提高服务器性能的一个很直接的方法就是以空间换时间,即“浪费”服务器的硬件资源,以换取其运行效率。这就是池的概念。池是一组资源的集合,这组资源在服务器启动之初就完全被创建并初始化,这称为静态资源分配。当服务器进入正是运行阶段,即开始处理客户请求的时候,如果它需要相关的资源,就可以直接从池中获取,无需动态分配。原创 2017-08-18 20:34:03 · 594 阅读 · 0 评论 -
Linux下生成随机数和随机字符串
1、生成长度为32的随机字符串head -c 32 /dev/random | base64该方式产生的随机数效果比较好,但是,当不能产生随机数时,它会阻塞在那里,也就是为阻塞程序的执行 2、用/dev/urandom文件产生head -c 32 /dev/random | base64该方式产生的随机数随机效果一般是,但是产生速度快,不会阻塞程序的运行 ………………………………………………………………原创 2017-08-21 10:29:39 · 22266 阅读 · 0 评论 -
linux下的Sort命令
sort命令是在Linux里非常有用,它将文件进行排序,并将排序结果标准输出。sort命令既可以从特定的文件,也可以从stdin中获取输入。转载 2017-08-06 22:01:23 · 376 阅读 · 0 评论 -
父进程等待子进程的异步版本
前言 首先,打开linux虚拟机或者系统的时候,系统自己建立一个init进程,这是Linux系统的基础进程,然后init进程再根据一些配置文件决定创建哪些进程,或者我们在终端自己创建一个新进程的时候,如果你有时间,你可以一直追查这个进程的祖祖辈辈,你会发现,他们都指向一个进程,那就是init进程。所以,可以这么说,Linux系统服务中,所有进程都是init的子孙进程。所以,进程的创建是通过创建子进原创 2017-08-21 14:08:28 · 311 阅读 · 0 评论 -
浅析linux下的crond和crontab
一、什么是crond? crond是Linux系统用来定期执行命令或指定程序的服务的一种服务或软件。一般情况下当我们安装完成Linux操作系统之后,默认便会启动Crond任务调用服务。Crond服务会定期(默认一分钟检查一次)检查系统中是否有要执行的任务工作。如果有,便根据其预先设定的定时任务规则自动执行该定时任务工作。这个Crond定时服务就像我们的闹钟一样。原创 2017-08-21 15:42:57 · 362 阅读 · 0 评论 -
守护进程
一,守护进程概述 Linux Daemon(守护进程)是运行在后台的一种特殊进程。它独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件。它不需要用户输入就能运行而且提供某种服务,不是对整个系统就是对某个用户程序提供服务。Linux系统的大多数服务器就是通过守护进程实现的原创 2017-08-21 22:41:48 · 230 阅读 · 0 评论 -
使用gdb调试多线程多进程程序
GDB的基本介绍GDB是GUN开源组织发布的一个强大的UNIX下的程序调试工具。或许,平时大家更加习惯图形界面的调试,比如VS上的IDE调试;但是如果我们在UNIX或Linux下做软件,我们呢就更加需要熟练GDB这个调试工具。转载 2017-08-23 00:02:01 · 755 阅读 · 0 评论 -
Linux进程间通信(4)——共享内存
共享内存是最快的进程间通信的方式原创 2017-06-07 11:36:29 · 308 阅读 · 0 评论 -
信号屏蔽pending
信号的产生 1、键盘产生的信号,只能发送到前台。(如:ctrl+z、ctrl+c等) 2、软硬件的异常。(如:指针异常,除0等) 3、进程调用kill命令或者kill函数在linux下查看信号用命令 kill -l 1-31 为普通信号,34-64为实时信号。一个进程是否收到1-31号的信号,通常用位图(32个bit位)来表示,其中比特位的位置是信号的编号,内容1表示收到0表示没收到。原创 2017-07-07 00:28:48 · 528 阅读 · 0 评论 -
线程安全和可重入函数
线程安全和可重入函数及其区别原创 2017-07-08 22:58:52 · 388 阅读 · 0 评论 -
linux下的find指令
文件的查找在Linux下我们可以用到三个命令来查找文件,通常我们都是先使用whereis或者是locate来检查,如果真的找不到了我们才以find来找。为什么呢?因为whereis和locate是利用数据库来查找数据,所以相当快速,而且并没有实际查询硬盘,比较节省时间。但是find是直接查找硬盘,如果你的硬盘比较老旧的话,就会花费很长的时间。原创 2017-03-29 11:56:30 · 5520 阅读 · 0 评论 -
linux下实现简单进度条
想要实现进度条我们得先搞清楚缓冲机制,那么什么是缓冲机制呢? 请往下看~原创 2017-04-04 15:23:39 · 721 阅读 · 0 评论 -
浅析文件描述符fd和FILE结构体
文件描述符fd(file descriptor) 文件指针 FILE*原创 2017-05-13 15:31:28 · 661 阅读 · 0 评论 -
Linux多线程编程
Linux 多线程编程 线程和进程的区别线程创建、等待、终止、分离代码原创 2017-06-05 17:42:19 · 423 阅读 · 0 评论 -
CRC(循环冗余校验)
一、什么是CRC校验CRC即循环冗余校验码(Cyclic Redundancy Check[1] ):是数据通信领域中最常用的一种查错校验码,其特征是信息字段和校验字段的长度可以任意选定。循环冗余检查(CRC)是一种数据传输检错功能,对数据进行多项式计算,并将得到的结果附在帧的后面,接收设备也执行类似的算法,以保证数据传输的正确性和完整性。原创 2017-07-10 16:53:23 · 6337 阅读 · 0 评论 -
Linux进程间通信(3)--信号量
信号量的本质是一种数据操作锁原创 2017-06-09 13:57:10 · 273 阅读 · 0 评论 -
浅析读者写者模型
读、写者模型读、写者模型与生产者消费者模型类似,但是也有不同的地方,多个读者可以共享一块空间中的数据,写者之间是相互斥的,读者和读者是共享的,读者和写者之间是互斥和同步的。 读写锁:也称自旋锁,一个读写锁允许有多个读者进行资源的读取,但是只能够允许一个写者对数据进行操作。(当线程申请资源失败时,由操作系统控制一直轮询检测锁的状态)原创 2017-06-21 17:25:20 · 272 阅读 · 0 评论 -
Linux进程间通信(2)--消息队列
消息队列提供了一种从一个进程向另一个进程发送一个数据块的方法。 每个数据块都被认为是有一个类型,接收者进程接收的数据块可以有不同的类型值。我们可以通过发送消息来避免命名管道的同步和阻塞问题。消息队列与管道不同的是,消息队列是基于消息的,而管道是基于字节流的,且消息队列的读取不一定是先入先出。原创 2017-06-09 23:40:32 · 274 阅读 · 0 评论 -
进程间通信(1)--管道
Linux下一切皆文件,我们可以创建一个管道文件进行通信,实际上是调用pipe函数在内核中开辟一块缓冲区(称为管道)用于通信,管道是一种最基本的IPC机制,由pipe函数创建 #include <unistd.h> int pipe (int filedes[2]);原创 2017-06-11 00:40:45 · 210 阅读 · 0 评论 -
浅析死锁
死锁指的是两个或两个以上的进程在执行过程中,由于资源竞争或者由于彼此通信(如进程切换)而造成的一种阻塞现象,若无外力作用,它们都将无法推进下去,此时称系统处于死锁状态,这些永远在互相等待的进程成为死锁进程。避免死锁的算法:鸵鸟算法、银行家算法原创 2017-06-11 10:27:31 · 291 阅读 · 0 评论 -
linux编程之mysleep的实现
普通mysleep与规避竟态条件下的mysleep原创 2017-07-05 23:49:58 · 301 阅读 · 0 评论 -
生产者与消费者模型
浅析生产者与消费者模型 及 多线程生产者与消费者模型的实现原创 2017-06-15 18:02:37 · 792 阅读 · 0 评论 -
常用Socket函数详解
常用socket函数详解关于socket函数,每个的意义和基本功能都知道,但每次使用都会去百度,参数到底是什么,返回值代表什么意义,就是说用的少,也记得不够精确。每次都查半天,经常烦恼于此。索性都弄得清楚、通透,并记录下来,一来便于自己记忆,再者以防日后查阅、回顾。 主要介绍:socket、bind、listen、connect、accept、send、sendto、recv、recvfrom转载 2017-07-30 12:01:27 · 24257 阅读 · 0 评论 -
shell 字符串截取
shell , printf ,awk,sed 字符串截取工具的使用转载 2017-08-23 01:24:04 · 809 阅读 · 0 评论