linux
linux探讨交流与学习
zhouchaoya142526
include
展开
-
进度条的简单实现
代码如下#include #include int main(){ char buffer[52] = {'\0'}; char ch[] = {'|', '/', '-', '\\'}; printf("\033[?25l\033[41m"); printf("%69s\r"); fflush(stdout); printf("\原创 2017-04-06 16:22:56 · 524 阅读 · 0 评论 -
struct tast_struct 和mm_struct成员中的冰山一角
这个东西范围太广了,发现的只是其中微小的的一个角落tast_structstruct task_struct { volatile long state; /* -1 unrunnable, 0 runnable, >0 stopped */ void *stack; atomic_t usage; unsigned int flags;原创 2017-04-12 14:41:36 · 741 阅读 · 0 评论 -
atexit函数介绍
根据我们的理解,一个程序的执行都是从MAIN函数开始执行,从MAIN函数结束,这不可否认没有问题,然后依次往下一条一条语句执行,但是事实真的是这样么,接下来看看这个程序,是不是像我们想象的那样呢?在linux下我编写了这样一个程序,先不要看答案,看看能不能做对(很简单的)根据我们刚才的思路,这个程序应该是先调用fun1,fun2,...依次往下执行,最后的结果就是i am NO.1!原创 2017-04-25 17:58:48 · 747 阅读 · 0 评论 -
孤儿进程与僵尸进程
一.僵尸进程与孤儿进程定义僵尸进程:一个子进程在其父进程还没有调用wait()或waitpid()的情况下退出。这个子进程就是僵尸进程。僵尸进程会以终止状态保持在进程表中,并且一直等待父进程都去退出状态代码。孤儿进程:一个父进程退出,而它的一个或多个子进程还在运行,那么那些子进程将成为孤儿进程。孤儿进程将被init进程(也是1号进程进程)所收养,并由init进程对它们完成状态收集工作。原创 2017-04-27 16:52:30 · 529 阅读 · 0 评论 -
进程间通信--FIFO
在linux进程间通信中,管道(pipe)是非常有用的,而且我们使用的地方也非常多,但是不可否认的是管道有一个致命的缺点就是只能用于有相关关系的进程之间的通信,比如:父子进程。为了很好的解决这个问题。因此我们引入了——FIFO(first in first out)顾名思义:先入先出。相对于pipe来说,FIFO一般被称为命名管道,因为他们和文件系统相关联,可以实现任意两个进程之间的通信。原创 2017-05-24 20:13:57 · 981 阅读 · 0 评论 -
进程间通信--信号量
进程间通信除了匿名管道,命名管道;还有XSI IPC(消息队列、信号量和共享内存)。 一. 函数介绍 1.什么是信号量? 为了防止出现因多个程序同时访问一个共享资源而引发的一系列问题,我们需要一种方法,它可以通过生成并使用令牌来授权,在任一时刻只能有一个执行线程访问代码的临界区域。临界区原创 2017-06-03 20:04:36 · 444 阅读 · 0 评论 -
线程的简单解析
一、线程基本概念 线程是程序中一个单一的顺序控制流程。在单个程序中同时运行多个线程完成不同的工作,称为多线程。 线程和进程的区别在于, 子进程和父进程有不同的代码和数据空间, 而多个线程则共享数据空间,每个线程有自己的执行堆栈和程序计数器为其执行上下文。多线程主要是为了节约CPU时间,发挥利用,根据具体情况而定.线程的周期新建就绪运行阻塞死亡线程调度与优先级有线程进入了就绪状态,原创 2017-06-04 23:10:10 · 260 阅读 · 0 评论 -
线程:死锁
一.死锁原理死锁可以定义为一组相互竞争系统资源或进行通信的进程间的“永久”阻塞。当一组进程中每个线程都在等待某个事件(典型的就是等待所请求的资源被释放),而只有这组进程的其他被阻塞的进程才可以触发该事件的发生,这是这时就称为这组进程发生死锁。因为没有事件能够被触发,所以死锁是永久性的。 我们生活中常见的死锁问题就是交通死锁。如图所示,显示了一个十字路口4辆车几乎同时到达了,并且相互交叉的停了下来,原创 2017-06-05 20:23:37 · 1002 阅读 · 1 评论 -
进程间通信:共享内存
系统V的IPC通信机制包括了消息队列、共享内存和信号量。每一种IPC结构结构都有一个非负整数标志,当创建一个IPC结构时,调用进程都必须提供一个类型为key_t的键(key)。操作系统把这个键转换为一个IPC的唯一标识符。可以使用以下方式来指定一个键,调用函数如下:#include #include key_t ftok(const char* path, int projecti原创 2017-06-06 16:08:36 · 269 阅读 · 0 评论 -
进程间通信--消息队列
Linux的一个重要特色就是允许两个进程间通过数据交换进行通信,这样简单的程序就可以组合起来实现复杂的任务。现在我们主要谈谈基于系统V IPC机制的通信方式–消息队列。一.什么是消息队列?消息队列是消息的链表,每个消息都有固定的最大长度。消息可以加到队列的尾部,消息的发送次序和接收次序是一致的,消息是可以有类型的,这样使用一个队列就可以处理多个消息流。在使用消息队列之前,和IPC另外两原创 2017-06-07 14:52:23 · 380 阅读 · 0 评论