
Linux系统编程
文章平均质量分 65
mm_hh
这个作者很懒,什么都没留下…
展开
-
Linux 下 find 查找命令详解 && 黏滞位
Linux---find一、略讲解 find 指令(非常重要) Linux 下 find 命令在目录结构中搜索文件,并执行指定的操作。Linux 下 find 命令提供了很多的查找条件,功能很强大。由于 find 具有强大的功能,所以他的选项也很多,大部分选项都很重要。即使系统中含有网络文件系统(NFS),find 命令在该系统中同样有效,只要你具有相应的权限。在运行一个非常消耗资源的原创 2017-03-25 08:47:07 · 614 阅读 · 0 评论 -
gdb调试常用命令
gdb调试过程中的常用命令: list/l 行号:显示binFile源代码,接着上次的位置往下列,每次列10行。 list/l 函数名:列出某个函数的源代码。 r或run:运行程序。 s或step:进入函数调用 breaktrace(bt):查看各级函数调用及参数 info(i) locals:查看当前栈帧局部变量的值 info break :查看断点信原创 2017-06-12 17:56:46 · 553 阅读 · 0 评论 -
进程间通信之--匿名管道
一、为什么进程间通信需要管道两个进程之间的通信,每个进程各有不同的地址空间,每个地址空间的数据信息是独立的,任何一个进程的全局变量在另一个进程中都看不到。例如:父进程中有一个变量 a = 0;在子进程中改变 a 的值是不会影响在父进程中的 a 的值,因为虽然子进程所有的数据信息都是拷贝(写时拷贝)自父进程,两个进程有各自不同的地址空间。 eg:代码验证: //mypipe.c 1 #includ原创 2017-06-24 17:58:29 · 340 阅读 · 0 评论 -
进程间通信之--命名管道
命名管道(FIFO)1、 什么是命名管道?命名管道也被称为FIFO文件,它是一种特殊类型的文件,它在文件系统中以文件名的形式存在,但是它的行为却和之前所讲的没有名字的管道(匿名管道)类似。 2 、创建命名管道我们可以使用两下函数之一来创建一个命名管道,他们的原型如下:#include <sys/types.h> #include <sys/stat.h> int mkfifo(const c原创 2017-06-24 18:11:36 · 270 阅读 · 0 评论 -
TCP/IP协议
TCP协议[传输控制协议]开放分类:互联网通信技术 TCP(Transmission Control Protocol传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议,由IETF的RFC793定义。在简化的计算机网络OSI模型中,它完成第四层传输层所指定的功能,用户数据报协议(UDP)是同一层内另一个重要的传输协议。在因特网协议族中,TCP层是位于IP层之上,应用层之下的中间层。转载 2017-06-25 12:44:48 · 643 阅读 · 0 评论 -
gdb调试多进程、多线程
一、gdb的初步认识介绍: gdb是Linux操作系统下的代码调试工具使用: 需要在源代码生成可执行文件后的时候加上-g选项 eg:(Makefile文件中在生成可执行文件的那句编译后面加上 -g)开始使用: gdb binFile(binFile代表可执行文件)退出: ctrl + d或 quit调试过程中常用得命令:“`list/l 行号:显示binFile源代码,接着上次的位置往下列原创 2017-06-12 18:00:24 · 747 阅读 · 0 评论 -
验证子进程退出时会给父进程发送信号的机制
一、简单版本代码块 1 #include<stdio.h> 2 #include<stdlib.h> 3 #include<unistd.h> 4 #include<sys/types.h> 5 #include<sys/wait.h> 6 #include<signal.h> 7 void catchSig(int sig) 8 { 9 printf("get原创 2017-06-13 17:42:10 · 1807 阅读 · 0 评论 -
父进程等待子进程的异步版本
代码块 #include<stdio.h> 2 #include<stdlib.h> 3 #include<unistd.h> 4 #include<sys/types.h> 5 #include<sys/wait.h> 6 #include<signal.h>原创 2017-06-13 18:30:06 · 327 阅读 · 0 评论 -
Linux脚本下倒引号(`)与$()
一、倒引号(`)在Linux的作用倒引号(`)在Linux中就是将倒引号内的Linux命令先执行,然后将执行结果赋予变量。二、$()的作用$()和 ` `:在 bash shell 中,$( ) 与` ` (倒引号) 都是用来做命令替换用(commandsubstitution)的。例如 version=$(uname -r)和version=uname -r都可以是version得到内核的版本原创 2017-06-26 22:56:29 · 2120 阅读 · 0 评论 -
守护进程的模拟实现(daemon)
一、什么是守护进程守护进程也称为精灵进程(Daemon),是运行在后台的一种特殊进程。他独立与控制终端并且周期性的执行某种任务或等待处理某些发生的事件。守护进程是一种很有用的进程。 Linux的大多数服务器就是用守护进程实现的 比如:Internet服务器 inetd,Web服务器httpd等同时守护进程完成许多系统任务。比如:作业规划进程crond等。 Linux系统启动时会启动很多系统服务进原创 2017-06-14 17:16:18 · 558 阅读 · 0 评论 -
Linux文件与目录的三种时间状态(mtime,atime,ctime)区别
mtime(modify time):最后一次修改文件或目录的时间ctime(change time) :最后一次改变文件或目录(改变的是原数据即:属性)的时间 如:记录该文件的inode节点被修改的时间。touch命令除了-d和-t选项外都会改变该时间。而且chmod,chown等命令也能改变该值。atime(access time)::最后一次访问文件或目录的时间 对于文件: 当修改m转载 2017-08-12 16:56:36 · 1598 阅读 · 0 评论 -
进程组、作业、会话
一、进程组二、作业三、会话四、进程组与作业的区别如果作业内部某个进程有创建了子进程,则该子进程属于进程组,不属于作业。父进程退出作业也退出五、相关命令ps axj | grep -E ‘test|sleep’//显示会话/作业型如: [1] PID //1代表作业号 PID:是最后一个进程号jobs :查看作业fg 4 或%4: 把4号作业提到前台bg 2 :使2号作业在后台运行c原创 2017-06-14 17:44:06 · 280 阅读 · 0 评论 -
Linux下的LWP(轻量级进程)、进程 、 线程、用户级线程、内核线程
一、定义再看正文之前我要先强调一下几点: 1. Linux中没有真正的线程,但windows中确实有线程 2. Linux中没有的线程是由进程来模拟实现的(又称作:轻量级进程) 3. 所以在Linux中(在CPU角度看)进程被称作轻量级进程(LWP) 由于Linux下没有真正的线程,只有所谓的用户级线程,线程在CPU地址空间内运行关于进程(PCB)、轻量级进程原创 2017-05-20 20:40:53 · 17869 阅读 · 3 评论 -
Linux的shell模拟实现
shell的简单实现代码部分#include<stdio.h>#include<unistd.h>#include<string.h>#include<sys/wait.h>#include<stdlib.h>#include<sys/types.h>#include<fcntl.h>#include<sys/stat.h>int main(){ while(1) {原创 2017-05-10 09:49:29 · 1092 阅读 · 0 评论 -
Linux进入目录与创建及访问文件权限
一、进入一个目录需要什么权限?1.当在超级用户下时创建一个 dir_root目录,并且取消该目录的所有权限 (chmod 000 dir_root)当我们要进入dir_root目录时,也是允许的;由此可得:在超级用户下就算dir_root目录对拥有者没有读、写、执行权限,超级用户依然可以进入目录,并且可以创建文件及目录。2.当在超级用户下把目录的拥有者改为普通用原创 2017-03-14 19:30:52 · 1272 阅读 · 0 评论 -
\r 与 \n 的区别(应用在Linux下进度条的制作)
\r 与 \n 的区别1. 回车换行符,是2个符。一个回车,一个换行。\r 仅仅是回车,\n 是换行。一个是控制屏幕或者从键盘的Enter键输入。另一个是控制“打印机”。2. 回车 = 光标到达最左侧,换行 = 移动到下一行。如果只回车,打印的东西会覆盖同行以前的内容,如果只换行,打印的东西会在下一行的一个位置继续。3. \r 实际是回到首行。\n 如果下一行已经有了一些内容的话他会在那些内容的后边原创 2017-04-11 11:35:21 · 509 阅读 · 0 评论 -
Linux下PCB(进程控制块)、内核栈和用户空间栈关系
1.进程的堆栈内核在创建进程的时候,在创建task_struct的同事,会为进程创建相应的堆栈。每个进程会有两个栈,一个用户栈,存在于用户空间,一个内核栈,存在于内核空间。当进程在用户空间运行时,cpu堆栈指针寄存器里面的内容是用户堆栈地址,使用用户栈;当进程在内核空间时,cpu堆栈指针寄存器里面的内容是内核栈空间地址,使用内核栈。2.进程用户栈和内核栈的切换当进程因为中断或者系统调用而陷入内核态之原创 2017-04-11 16:36:12 · 8822 阅读 · 0 评论 -
Linux2.6.32 PCB内tast_struct的简述
linux下的PCB定义 (centos)本分类下文章大多整理自《深入分析linux内核源代码》一书。如果想深入了解请下载该书,深入理解。在看此片博文前,如若对操作系统不甚了解的同学,须提前了解相关知识。首先,我们来了解一下什么叫task_struct;Linux中的每个进程由一个task_struct数一 task_struct 结构描述1.进程调度信息调度程序利用这部分信息决定系统中哪个进程原创 2017-04-11 17:55:00 · 800 阅读 · 0 评论 -
Linux-vim的简单配置
Linux-vim的简单配置命令vim的配置文件为/etc/vimrc,但一般不建议直接修改这个文件,而是在用户根目录下创建一个新的隐藏文件:vim ~/.vimrc 我用的是CentOs的Linux系统 命令的详细讲解以下命令编写在 (.vimrc)文件中 用命令(vim ~/.vimrc) :号后面的是注释 1. set nu:显示行数 2. set nonu:不显示行数 3. s原创 2017-04-03 09:24:16 · 437 阅读 · 0 评论 -
Linux 下进度条的编辑
进度条代码块: 1 #include <stdio.h> 2 #include <unistd.h> 3 #define _SIZE_ 104 4 int main() 5 { 6 int i=1; 7 char str[_SIZE_]; 8 memset(str,'\0',sizeof(_SIZE_)); 9 s原创 2017-04-03 12:14:19 · 423 阅读 · 0 评论 -
Linux下atexit()函数的使用
第一种情况:代码1 结果1 上面这个结果是先打印start,然后等了12秒后打印end,再等了3秒,然后紧接着打印了fun3,fun2,fun1然后结束了。第二种情况:代码2 结果2 上面这个结果是是先等待12秒后在同一行打印了startend,然后又等了3秒钟依次显示了fun3、fun2、fun1,然后结束了。第三种情况:代码3 结果3 第三原创 2017-04-15 19:59:36 · 496 阅读 · 0 评论 -
僵尸进程 与 孤儿进程
1、基本概念 我们知道在unix/linux中,正常情况下,子进程是通过父进程创建的,子进程在创建新的进程。子进程的结束和父进程的运行是一个异步过程,即父进程永远无法预测子进程 到底什么时候结束。 当一个 进程完成它的工作终止之后,它的父进程需要调用wait()或者waitpid()系统调用取得子进程的终止状态。 孤儿进程:一个父进程退出,而它的一个或多个子进程还在运行,那么那些子进程将成为孤儿原创 2017-04-15 21:54:02 · 242 阅读 · 0 评论 -
Linux下 文件描述符(fd)与 文件指针(FILE*)
一、文件描述符(fd)我们都知道在Linux下一切皆文件。当然设备也不例外,如果要对某个设备进行操作,就不得不打开此设备文件,打开文件就会获得该文件的文件描述符fd( file discriptor), 它就是一个很小的整数,每个进程在PCB(Process Control Block)中保存着一份文件描述符表,文件描述符就是这个表的索引,每个表项都有一个指向已打开文件的指针。 图中文件描述符原创 2017-05-07 21:33:34 · 21780 阅读 · 8 评论 -
FILE结构体详解
1.1 struct file struct file结构体定义在include/linux/fs.h中定义。文件结构体代表一个打开的文件,系统中的每个打开的文件在内核空间都有一个关联的 struct file。它由内核在打开文件时创建,并传递给在文件上进行操作的任何函数。在文件的所有实例都关闭后,内核释放这个数据结构。在内核创建和驱动源码中,struct file的指针通常被命名为file或转载 2017-05-07 21:44:15 · 8898 阅读 · 0 评论 -
软连接 与 硬链接
1>首先什么是链接? 链接操作实际上是给系统中已有的某个文件指定另外一个可用于访问它的名称。对于这个新的文件名,我们可以为之指定不同的 访问权限 ,以控制对信息的共享和安全性的问题。 如果链接指向目录,用户就可以利用该链接直接进入被链接的目录而不用打一大堆的路径名。而且,即使我们删除这个链接,也不会破坏原来的目录。2>硬链接 硬链接只能引用同一文件系统中的文件。它引用的是文件在文件系统中的物理索引原创 2017-08-23 19:41:14 · 1186 阅读 · 0 评论