Linux
文章平均质量分 73
ZoctopusD
*——*
展开
-
Linux中权限与特殊时间
1、进入某个目录需要什么权限?答:需要可执行权限(x)。2、在目录内创建文件、显示文件需要什么权限?答:创建文件需要写权限 (w),显示文件需要读权限(r)。创建文件查看文件3、Access、Modify、Change时间有什么含义,如何修改特定时间?答:(1)Access是文件最近一次被访问的时间Modify是文件内原创 2017-03-19 14:36:35 · 531 阅读 · 0 评论 -
Linux下的读写锁
读写锁其实是一种特殊的自旋锁在linux下有两种锁: (1)自旋锁:不断地周而复始的做一件事情,不挂起,轮询 (2)挂起等待锁:信号量,互斥锁读写锁也有三种关系: 写者和写者:互斥原创 2017-05-30 20:16:30 · 877 阅读 · 0 评论 -
Linux下的信号量
linux下的信号量本身就是临界资源,所以PV操作都是原子操作。下面是实现二元信号量的代码,二元信号量就是互斥锁。comm.h 1 #ifndef _COMM_H_ 2 #define _COMM_H_ 3 4 #include 5 #include 6 #include 7 #include 8 #include 9 10 #define PA原创 2017-05-19 21:04:44 · 376 阅读 · 0 评论 -
Linux下的共享内存
测试代码:comm.h 1 #ifndef _COMM_H_ 2 #define _COMM_H_ 3 4 #include 5 #include 6 #include 7 8 #define PATHNAME "." 9 #define PROJ_ID 0x6666 10 11 int creat(int size); 12 int get(原创 2017-05-20 16:11:24 · 459 阅读 · 0 评论 -
Linux下的守护进程
守护进程也称精灵进程(Daemon),是运行在后台的一种特殊进程。它独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件。守护进程是一种很有用的进程。Linux的大多数服务器就是用守护进�%5�5��现的。比如,Internet服务器inetd,Web服务器httpd等。同时,守护进程完成许多系统任务。比如,作业规划进程crond等。Linux系统启动时会启动很多系统服务进程,这些原创 2017-06-27 18:33:07 · 2004 阅读 · 0 评论 -
CRC校验
1. 定义 CRC 即循环冗余校验码:是数据通信领域中最常用的一种差错校验码,其特征是信息字段和校验字段的长度可以任意选定。在链路层被广泛使用的检错技术。 循环冗余检查(CRC)是一种数据传输检错功能,对数据进行多项式计算,并将得到的结果附在帧的后面,接收设备也执行类似算法,以保证数据传输的正确性和完整性。 2. 原理 在数据链路层传送的帧中,原创 2017-06-29 14:31:50 · 465 阅读 · 0 评论 -
Linux下的crond与crontab
一、概念1. 定义 crond 是 Linux 系统用来定期执行命令或指定程序的服务的一种服务或软件。一般情况下当我们安装完成 linux 操作系统之后,默认便会启动 Crond 任务调用服务。Crond 服务会定期(默认一分钟检查一次)检查系统中是否有要执行的任务工作。如果有,便根据其预先设定的定时任务规则自动执行该定时任务工作。这个 Crond 定时服务就像闹原创 2017-06-29 14:45:22 · 353 阅读 · 0 评论 -
Linux下的可重入函数与线程安全
可重入函数和线程安全1.线程安全线程安全:当一个函数被多个并发进程反复调用时,它会一直产生正确而的结果,称其为线程安全的。若一个函数不是线程安全的,就称其为线程不安全的。线程安全就是说多线程访问同一代码,不会产生不确定的结果。换句话说,线程安全就是多线程访问时,采用加锁机制,当一个线程访问该类的某个数据时,用锁对数据进行保护,其他线程不能访问该数据直到该线程读取完,原创 2017-06-30 16:19:47 · 449 阅读 · 0 评论 -
Linux下子进程的异步等待
通过wait函数或者waitpid函数可以清理僵尸进程,父进程可以通过两种方式等待子进程,一种是阻塞方式,另一种是非阻塞方式,而不管是那种方式,父进程都做不到完全不理会子进程而去完成自己的动作,即子进程不能达到异步等待的目的。1、关于SIGCHLD信号子进程在终止时会给父进程发SIGCHLD信号,该信号的默认处理动作是忽略,父进程可以自定义SIGCHLD信号的处理函数,这样父进程就可以进行原创 2017-06-30 19:49:53 · 811 阅读 · 0 评论 -
Linux下的mysleep
我们模拟实现一下sleep,称为mysleep,在实现之前先介绍三个函数alarm函数,sigaction函数,以及pause函数。 首先我们来看alarm函数: #include unsigned int alarm(unsigned int seconds); 调用alarm函数可以设定一个闹钟,大家都知道,在现实生活原创 2017-06-30 20:32:56 · 381 阅读 · 0 评论 -
Linux下的信号量----生产者与消费者
关于信号量的函数:初始化信号量 int sem_init (sem_t *sem, int pshared, unsigned int value) 第一个参数是信号量;第二个参数pshared设为0,意思是信号量用于同一进程间同步;第三个参数value是计数器的初始值。P操作原创 2017-05-30 19:37:53 · 1477 阅读 · 0 评论 -
Linux下的atexit,exit,_exit函数
在Linux中函数的退出有以下8种情况,其中前5种为正常情况,后3种为异常情况1 从main函数返回;2 调用exit函数;3 调用_exit或_Exit;4 最后一个线程从启动例程返回;5 最后一个线程调用pthread_exit;6 调用abort函数;7 接到一个信号并终止;8 最后一个线程对取消请求做出响应exit函数与_exit函数的区别原创 2017-04-25 23:07:58 · 614 阅读 · 0 评论 -
Linux下的死锁
死锁 (deallocks): 是指两个或两个以上的进程(线程)在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程(线程)称为死锁进程(线程)。 由于资源占用是互斥的,当某个进程提出申请资源后,使得有关进程(线程)在无外力协助下,永远分配不到必需的资源而无法继续运行,这就产生了一种特殊现象死锁。原创 2017-05-27 21:26:38 · 380 阅读 · 0 评论 -
Linux下的find命令
pathname: find命令所查找的目录路径。例如用.来表示当前目录,用/来表示系统根目录。-print: find命令将匹配的文件输出到标准输出。-exec: find命令对匹配的文件执行该参数所给出的shell命令。相应命令的形式为'command' { } \;,注意{ }和\;之间的空格。-ok: 和-exec的作用相同,只不过以一种更为安全的模式来执行该参数所给出的she原创 2017-03-20 22:33:46 · 1888 阅读 · 0 评论 -
Linux下配置vim-配置ctags
【配置ctags】 假设你要编译的源代码目录位置为:/worksapce/weather 执行下面操作,生成tags标签文件:[root@ericsson:/workspace/weather]#pwd/workspace/weather[root@ericsson:/workspace/weather]#lsdispacth.cpp dispacth.原创 2017-03-29 19:46:42 · 469 阅读 · 0 评论 -
Linux中的“进度条”程序
程序代码:#include 2 #include 3 int main() 4 { 5 int i=0; 6 char bar[102]; 7 const char *lable="|\\-/"; //进度条后的旋转图标,\\是输出\ 8 bar[0]=0; 9 while(i<=100) 10原创 2017-04-04 20:32:43 · 331 阅读 · 0 评论 -
Linux中的task_struct结构体
Linux内核通过一个被称为进程描述符的task_struct结构体来管理进程,task_struct是Linux中的【进程控制块PCB结构】的具体数据结构这个结构体包含了一个进程所需的所有信息。它定义在linux-2.6.38.8/include/linux/sched.h文件中。下面对task_struct这个结构体 进行各个字段的详细介绍1. 调度数据成员原创 2017-04-04 21:02:53 · 436 阅读 · 0 评论 -
孤儿进程与僵尸进程
我们知道在unix/linux中,正常情况下,子进程是通过父进程创建的,子进程在创建新的进程。子进程的结束和父进程的运行是一个异步过程,即父进程永远无法预测子进程 到底什么时候结束。 当一个 进程完成它的工作终止之后,它的父进程需要调用wait()或者waitpid()系统调用取得子进程的终止状态。 孤儿进程:一个父进程退出,而它的一个或多个子进程还在运行,那么那些子进程将成为孤儿进程。原创 2017-04-17 20:59:26 · 262 阅读 · 0 评论 -
Linux下的FILE*与fd
1. 文件描述符:在linux系统中,设备也是以文件的形式存在,要对该设备进行操作就必须先打开这个文件,打开文件就会获得文件描述符,它是个很小的正整数。每个进程在PCB(Process Control Block)中保存着一份文件描述符表,文件描述符就是这个表的索引,每个表项都有一个指向已打开文件的指针。文件描述符的优点:兼容POSIX标准,许多Linux和UNIX系统调用都依赖于它。文件描述原创 2017-04-27 20:50:09 · 844 阅读 · 0 评论 -
Linux中的管道pipe----管道的四种情况和特点
1 #include 2 #include 3 #include 4 #include 5 int main() 6 { 7 int fds[2]; 8 if(pipe(fds)<0) 9 { 10 perror("pipe"); 11 return 1; 12 } 13 printf(原创 2017-05-10 23:05:41 · 1500 阅读 · 0 评论 -
Linux下的管道pipe----管道容量和实现机制
管道容量 linux上的PipE容量为(capacity)65536个字节;实验得到Ubuntu的PIPE_BUF为4096。 当 管道的写端存在时,如果请求的字节数目大于PIPE_BUF,则返回管道中现有的数据字节数,如果请求的字节数目不大于PIPE_BUF,则返回管道中现有数据字节数(此时,管道中数据量小于请求的数据量);或者返回请求的字节数(此时,管道中数据量不小于请求的数原创 2017-05-12 21:07:26 · 2541 阅读 · 0 评论 -
Linux下的消息队列MsgQueue
server文件运行时先收消息再发消息,但是server.c中创建了消息队列,所以先运行serverclient文件运行时先发消息再收消息运行结果:打开两个terminal分别进行comm.h头文件 1 #ifndef _COMM_H_ 2 #define _COMM_H_ 3 4 5 #include 6 #include 7 #includ原创 2017-05-15 23:11:46 · 2537 阅读 · 0 评论 -
Linux下的UDP连接编程
udp是无连接不可靠的IP协议,和tcp有所不同。 udp服务器调用socket(),bind(),listen()完成套接字初始化后,调用accept()阻塞等待处于监听端口的状态。 udp客户端调用socket()初始化后,调用connect()发送SYN字段并阻塞等待应答。 客户端如果一直与服务端连接,服务端退出后重启时,端口号已被占用,和tcp一直,具有TIME_WAIT特性。 代原创 2017-07-11 15:29:09 · 817 阅读 · 0 评论