linux
文章平均质量分 58
shine_zyd_way
这个作者很懒,什么都没留下…
展开
-
简单进度条的实现
首先让我们先来看进度条实现的代码:#include <stdio.h>#include <unistd.h>#include <string.h>int main(){ char bar[102]; memset(bar,0,102*sizeof(char)); char s[]="|/-\\"; bar[0]='\0'; int i=0; while(i<=100)原创 2017-04-08 17:07:04 · 482 阅读 · 0 评论 -
atexit函数解析
进程终止的方式有8种,如下所列出,其中前5种是正常的终止,后三种是异常的终止: 1.从main函数返回 2.调用exit函数 3.调用_exit函数或者_EXIT函数 4.最后一个线程从启动历程返回 5.最后一个线程调用pthread_exit 6.调用abort函数 7.接到一个信号并终止 8.最后一个线程对取消请求做出响应 exit()和_exit()以及_Exit()函数的原创 2017-04-16 13:46:15 · 323 阅读 · 0 评论 -
stat对文件的操作的三个时间
Linux中的stat是用来显示文件信息的,首先让我们来看一下他都显示了什么信息。 建立一个test.c文件,用stat来查按文件的一些信息: 其中,我们看到了一些有关事件的东西,其中包括3种时间信息 1>Access:文件最后一次被访问的时间 2>Modify:文件最后一次被修改的时间 3>Change:文件的属性最后一次被修改的时间,比如文件的权限,大小等属性 touch -a原创 2017-04-20 21:22:12 · 580 阅读 · 0 评论 -
进程间通信之匿名管道
我们知道每个进程都有各自 的进程地址空间,一个进程看不到另外一个进程的全局变量,那么要实现进程之间的数据交换,必须要通过内核,首先内核要先开辟缓冲区,进程1先把数据拷贝到内核的缓冲区中,进程2再从缓冲区中把数据拿走,内核提供的这种机制就叫做进程间通信。 管道是一种基本的IPC机制,用于创建管道的函数为pipe;#include <unistd.h>int pipe(int filedes[2])原创 2017-08-14 15:47:05 · 466 阅读 · 0 评论 -
进程间通信之消息队列
消息队列提供了一种从一个进程向另一个进程发送数据块的方法,每个数据块都被认为是由一个类型的,接收者进程接收的数据块可以有不同的类型。消息队列是基于消息的,管道式基于字节流的,可以用发送消息的方式来避免管道的同步与阻塞问题,消息队列的读取,不一定是先进先出。 消息队列与命名管道有一样的不足,就是每个消息的最大长度是有上限的(MSGMAX),每个消息队列的总的字节数是有上限(MSGMNB),系统上消息原创 2017-08-14 18:02:48 · 241 阅读 · 0 评论 -
进程间通信之命名管道
前面所说的pipe我们叫它匿名管道,他只能用于有关系的进程之间的通信,为了实现不同进程之间的通信,有一种管道叫做命名管道Fifo来实现任意两个进程之间的通信。命名管道是一个设备文件,总是按照先进先出的工作方式来进行的,在文件系统中是以文件名的形式存在的。 首先创建命名管道可以有2种方式: 1.在shell下用命令mknod或者mkfifo来创建 2.调用系统函数mknod或者mkfifo函数创原创 2017-08-14 16:13:17 · 280 阅读 · 0 评论 -
进程间通信之信号量
信号量的本质是一种数据操控锁,它本身不具有数据交换的功能,而是通过来控制其他的通信资源来实现进程间通信的,信号主要负责数据的同步与互斥功能。进程请求一个使用信号量来表示的资源时,首先要读取信号量的值来判断资源是否能被使用,若信号量的值大于0,资源可用,等于0,无资源可用,同时进程会进入睡眠状态,直到有资源可用。当进程不再使用一个信号量控制的共享资源时,信号量的值+1,对信号量的值进行的增减操作均为原原创 2017-08-14 20:37:00 · 234 阅读 · 0 评论 -
进程间通信之共享内存
共享内存就是允许两个不相关的进程访问同一个逻辑内存。共享内存是在两个正在运行的进程之间共享和传递数据的一种非常有效的方式。不同进程之间共享的内存通常安排为同一段物理内存。进程可以将同一段共享内存连接到它们自己的地址空间中,所有进程都可以访问共享内存中的地址,就好像它们是由用C语言函数malloc分配的内存一样。而如果某个进程向共享内存写入数据,所做的改动将立即影响到可以访问同一段共享内存的任何其他进原创 2017-08-15 07:53:10 · 315 阅读 · 0 评论 -
双向通信管道
我们知道管道有匿名管道和命名管道,但是他们只能用于单向的通信,现在有一种双向管道用来进行双方的通信:sockpair来实现#include <stdio.h>#include <sys/socket.h>#include <string.h>int main(){ int fd[2]; int ret=socketpair(PF_LOCAL,SOCK_STREAM,0,fd);原创 2017-08-25 14:54:12 · 1685 阅读 · 0 评论