Linux系统编程
哈哈哈哈哈哈丶
花有重开日,人无再少年。
展开
-
Linux中的Atime,Mtime,Ctime
我们大家对Windows操作系统应该很熟悉,当我们创建一个文件,系统会自动保存一些文件的信息,当然这就包括了一些时间信息。我们具体看一个文件的时间信息:我们可以看到,Windows系统下的文件时间信息包括:创建时间,修改时间,访问时间。那么在Linux系统下,一个文件包含什么时间信息呢?我在Linux系统下新建了一个新的文件,并通过stat命令查看信息:我们看到,Linux原创 2017-03-21 20:24:41 · 424 阅读 · 0 评论 -
Linux--僵尸进程与孤儿进程总结
一、基本概念僵尸进程:在Linux系统中,一个子进程结束了,但是他的父进程没有没有调用wait/waitpid,那么父进程会变成一个僵尸进程。孤儿进程:孤儿进程指的是在其父进程执行完成或被禁止后仍继续运行的一类进程。这些孤儿进程将被init进程(进程号为1)所收养,并由init进程对他们完成状态收集工作。二、危害僵尸进程:在正常情况下,子进程是通过父进程创建的,子进程在创建原创 2017-05-12 20:51:58 · 615 阅读 · 0 评论 -
Linux--线程安全与可重入函数的区别和联系
可重入函数概念函数被不同的控制流程调用,有可能在第一次还没返回时就再次进入该函数,这称为重入。 不可重入函数,不可重入函数举例,线程安全,线程安全与可重入函数的区别原创 2017-07-11 15:32:22 · 329 阅读 · 0 评论 -
Linux--守护进程
守护进程也称为精灵进程(Daemon),是运行在后台的一种特殊进程。 。进程组,作业 终端,创建守护进程fork两次?#include<stdio.h>pid_t setsid(void)。守护进程的特点,创建守护进程的具体步骤,代码实现,daemon()函数创建守护进程原创 2017-07-12 15:36:31 · 259 阅读 · 0 评论 -
Linux--信号
我们可以利用 kill -l 命令查看Linux系统中的信号,其中:编号 1- 31 的信号为普通信号 编号 34-64的信号为实时信号,信号的产生条件,信号的产生方式,int kill(pid_t,int signo),int raise(int signo),void abort(void),信号递法(Delivery):实际执行信号的处理动作称为信号递达。,信号未决。int sigemptyset(sig原创 2017-07-01 15:50:45 · 311 阅读 · 0 评论 -
Linux--crond和crontab学习
Linux 系统则是由 cron (crond) 这个系统服务来控制的。Linux 系统上面原本就有非常多的计划性工作,因此这个系统服务是默认启动的。另 外, 由于使用者自己也可以设置计划任务,所以, Linux 系统也提供了使用者控制计划任务的命令 :crontab 命令。crond简介crond 是Linux下用来周期性的执行某种任务或等待处理某些事件的一个守护进程,与windows下的计划任务原创 2017-07-12 19:32:35 · 446 阅读 · 0 评论 -
计算机网络:TCP套接字通信
单进程的套接字通信,多进程的套接字通信 ,多线程的套接字通信,套接字创建函数socket,服务器绑定函数bind,设置监听状态函数listen,请求连接函数connect,原创 2017-07-15 21:45:50 · 1263 阅读 · 0 评论 -
计算机网络:UDP套接字通信
UDP的主要特点UDP是无连接的。UDP使用尽最大努力交付。UDP是面向报文的。(1)利用socket函数创建套接字(2)服务器用bind进行IP和端口号的绑定(3)不需要设置监听状态(4)绑定后直接读写如何保证UDP的可靠性原创 2017-07-17 14:08:25 · 1544 阅读 · 0 评论 -
I/O多路转接之select服务器
五种I/O模型Unix共有五种I/O模型:阻塞式I/O非阻塞I/OI/O复用(select和(e)poll)信号驱动I/O(SIGIO)异步I/O(Posix.1的aio_系列函数)阻塞I/O模型应用程序调用一个IO函数,导致应用程序阻塞,等待数据准备好。如果数据没有准备好,一直等待。数据准备好了,从内核拷贝到用户空间,表示IO结束,IO函数返回成功指示。非阻塞I/O模型我们把一个套接口原创 2017-07-17 21:40:14 · 364 阅读 · 0 评论 -
shell基本语法及实现彩色进度条
基本语法条件测试:test [条件测试test或[可以测试一个条件是否为真。如果测试结果为真,则该命令的退出码为0,如果测试结果为假,则命令的退出码为1(注意与C语言的逻辑表示正好相反)。 例如:测试两个数的大小关系 其中:虽然看起来很奇怪,但左⽅括号[确实是⼀个命令的名字,传给命令的各参数之间应该⽤空格隔开。 我们进行比较时需要一些常用的测试命令: -eq(等于)、-ne(不等于)、原创 2017-07-21 19:43:03 · 399 阅读 · 0 评论 -
Linux--进程间通信--管道
1进程间通信进程间通信,英文又称IPC(InterProcess Communication),因为每个进程各自有不同的用户地址空间,任何一个进程的全局变量在另一个进程看不到,所以进程之间要交换数据必须通过内核,在内核中开辟一块缓冲区,进程1把数据从用户地址空间烤到内核缓冲区,进程2再从内核缓冲区把数据读走,内核提供的这种机制就称为进程间通信。2管道2.1概念管道是一种最基本的IP原创 2017-05-14 19:47:32 · 598 阅读 · 0 评论 -
Linux--进程间通信之命名管道(代码实现)
一、概念Linux中的管道,可以分为匿名管道(同常就称为管道),命名管道。上一篇博客讲的就是匿名管道:Linux进程通信之管道,读者有兴趣可以看一下,本篇博客将的是命名管道。管道的不足之处,只能用于有血缘关系的进程。命名管道(FIFO)的提出就突破了管道的限制,管道提供了路径名与之关联,以FIFO的文件形式存储于文件系统中。命名管道可以被不同进程以不同的方式方法调用(可以跨权限、跨语言原创 2017-05-15 22:58:44 · 1096 阅读 · 1 评论 -
Linux中的find命令
Linux系统下的find命令在目录结构中搜索文件,并执行指定的操作。Linux系统下find命令提供了很多的查找条件,功能很强大。即使系统中含有网络文件系统,find命令在该文件系统中同样有效。本篇博客主要讲解一些常用的find命令。find命令的指令格式如下: find pathname [-options] [...] ***1) pathname: 要查找的目录2) [-op原创 2017-03-30 11:36:52 · 501 阅读 · 0 评论 -
浅谈Linux目录文件权限管理
进入目录需要什么权限?进入后要想显示,创建文件需要什么权限?原创 2017-03-14 16:35:54 · 578 阅读 · 0 评论 -
子进程的异步等待方式
基础知识在前面的博客中我们已经介绍了僵尸进程(僵尸进程与孤儿进程)的相关知识,我们说过可以通过调用wait和waitpid函数清理僵尸进程,父进程可以阻塞等待子进程结束,也可以以非阻塞的查询是否有子进程结束等待清理(也就是轮询的方式)wait与waitpid函数1.wait函数#include<sys/types.h>#include<sys/wait.h> pid_t wait(int* st原创 2017-07-10 16:35:49 · 339 阅读 · 0 评论 -
Linux--生产者与消费者
基于单链表的生产者消费者模型。基于环形队列的生产者消费者模型。生产者消费者问题,其实是一个多线程同步问题的经典案例。该问题描述了两个共享固定大小缓冲区的线程—即所谓的“生产者”和“消费者”–在实际运行时会发生的问题。生产者的主要作用是生成一定量的数据放在缓冲区中,消费者在缓冲区消耗这些数据。但是,要保证生产者不会在缓冲区满时还往缓冲区写数据,消费者也不会在缓冲区为空时原创 2017-06-30 20:40:23 · 2978 阅读 · 1 评论 -
Linux--线程死锁
线程为什会死锁??“锁”又是什么东西?我们这篇博客主要讲一下为什么要给线程加锁,为什么会出现线程死锁,线程死锁怎么解决。互斥锁在我的上篇博客已经讲解了一些线程的基本知识Linux–线程控制我们可以了解到线程是共享同一份内存的。这就意味着多个线程同时访问共享数据时可能发生冲突。分析程序我们首先分析一个小程序:#include<stdio.h>#include<stdlib.h>#include<p原创 2017-06-27 16:48:03 · 1738 阅读 · 0 评论 -
Linux--进程间通信总结
管道管道也叫匿名管道(pipe),是一种半双工的通信方式,数据只能单向流动。管道的特点: 匿名管道的特点,消息队列的特点,信号,信号量,共享内存原创 2017-06-21 21:56:18 · 312 阅读 · 0 评论 -
Linux--线程控制
一、线程的概念线程,有时被称为轻量级进程(Lightweight Process,LWP),线程的特点,线程与进程的区别,线程的控制,创建线程函数,分离线程原创 2017-06-17 22:01:14 · 451 阅读 · 0 评论 -
Linux--进程通信之信号量
信号量:有时被称为信号灯,是在多线程环境下使用的一种设施,是可以用来保证两个或多个关键代码段不被并发调用。信号量是一个特殊的变量,程序对它防问都是原子操作,且只允许对它进行等待(即P(信号变量))和发送(即V(信号变量))信息操作,二进制的信号变量只能取0和1的变量。P(sv): 如果sv的值大于0,就给它减1;如果它的值为0,就挂起该进程的执行。V(sv): 如果有其他进程因等待sv而挂起,就让它恢复运行,如果原创 2017-06-15 20:49:42 · 541 阅读 · 0 评论 -
Linux--进程通信之消息队列的双向通信
一、消息队列消息队列提供了一种从一个进程向另一个进程发送一个数据块的方法。每个数据块都被认 为是有一个类型,接收者进程接收的数据块可以有不同的类型值。我们可以通过发送消息 来避免命名管道的同步和阻塞问题。二、消息队列的特点1.消息队列是消息的链表,具有特定的格式,存放在内存中并由消息队列标识符标识. 2.消息队列允许一个或多个进程向它写入与读取消息.原创 2017-06-13 21:37:30 · 2500 阅读 · 0 评论 -
Linux--进程间的通信之共享内存
概念共享内存是进程间通信中最简单的方式之一。创建共享内存 int shmget(key_t key,size_t size,int shmflag);删除共享内存int shmctl(int shmid,int cmd,struct shmid_ds *buf);把进程连接到共享内存 int shmdt(int shmid,const void* shmaddr,int shmflag)把进程从共享内存中分原创 2017-06-21 20:20:24 · 450 阅读 · 0 评论