
linux
文章平均质量分 72
sweet candy
这个作者很懒,什么都没留下…
展开
-
linux下进入目录以及进入目录增删查需要的权限
进入目录需要哪些权限, 在目录中执行增删查(cd, touch, ls, rm, mv等)改文件动作, 需要哪些权限.(1)进入目录需要可执行x的权限(2)cd 执行操作需要x权限 (展开此目录下内容) touch 执行操作需要w,r,x三种权限 (创建一个文件) ls 执行操作需要r,x两种权限(查看目录下内容) rm 执行操作需要r,w,x三种权限(r...原创 2018-03-10 11:24:42 · 322 阅读 · 0 评论 -
模拟实现shell,使它支持重定向功能
我们都知道用户是通过操作系统来对我们的硬件或者软件进行操作的,但是我们平时在使用计算机的时候并没有直接与操作系统进行交流。而在linux下我们通常通过终端输入命令,但是你有没有想过为什么我们在终端输入命令,操作系统就能认识呢?这中间存在一个命令行解释器shell,也就是所谓的外壳程序,来对我们输入的命令进行解释,调用相关的系统调用接口,从而实现各种操作。在这里我们就来模拟一个shell。要模拟sh...原创 2018-04-16 14:43:36 · 812 阅读 · 0 评论 -
将二元信号量P/V操作,封装成动态/静态库,并分别使用并测试
P,V操作 PV操作与信号量的处理相关,P表示通过的意思,V表示释放的意思。 ftok函数,先不去了解它的作用来先说说为什么要用它,共享内存,消息队列,信号量他们三个都是找一个中间介质来进行通信的,这种介质多的是。就是怎么区分开来,就像唯一一个身份证来区分人一样。只要唯一就行,就想起来了文件的设备编号和节点,它是唯一的,但是直接用它来做识别好像不太好,不过可以用它来产生一个号。ftok()就出...原创 2018-04-22 11:04:38 · 503 阅读 · 0 评论 -
线程
线程概念在一个程序里的一个执行路线就叫做线程(thread)。更准确的定义是:线程是“一个进程内部的控制序列”。这里的内部是指指向同一个地址空间。一切进程至少都有一个执行线程。进程和线程进程是系统分配资源竞争的基本单位。线程是程序执行的最小单位。线程共享进程数据,但也拥有自己的一部分数据:线程ID,一组寄存器,栈,errno,信号屏蔽字,调度优先级。 同一地址空间,因此Text...原创 2018-04-22 15:49:30 · 159 阅读 · 0 评论 -
练习ipcs -q/m/s于ipcrm -q/m/s的使用,并总结
ipcs:显示IPC资源。是Linux上提供一些进程间通信方式的信息,包括共享内存,消息队列,信号。ipcs -a 是默认的输出信息,打印出当前系统所有的进程间通信方式的信息。ipcs -q 打印出使用消息队列进行进程间通信的信息。ipcs -m 打印出使用共享内存进行进程间通信的信息。ipcs -s 打印出使用信号进行进程间通信的信息。ipcrm:手动删除IPC资源。移除一个消息对象。或者共...原创 2018-04-18 16:53:23 · 895 阅读 · 0 评论 -
学习进程创建, 等待, 终止. 使用代码实现.
进程的创建3153先打印before消息,然后打印after,另一个after消息由3154打印的。fork之前父进程独立执行,fork之后,父子两执行流分别执行。fork之后,谁先执行完全由调度器决定。进程等待(waitpid)从本质上讲,waitpid和wait的作用是相同的,但waitpid多出了两个可由用户控制的参数pid和optionspid_t waitpid(pid_t pid,in...原创 2018-04-07 09:24:59 · 302 阅读 · 0 评论 -
编写自主shell
原创 2018-04-07 10:38:57 · 112 阅读 · 0 评论 -
封装fork/wait等操作, 编写函数 process_create(pid_t* pid, void* func, void* arg), func回调函数就是子进程执行的入口函数, arg是传递
原创 2018-04-07 11:35:12 · 390 阅读 · 0 评论 -
进程间通信
进程间通信进程间通信就是在不同进程之间传播或交换信息,那么不同进程之间存在什么双方都可以访问的介质呢?进程的用户空间是相互独立的,一般而言是不能相互访问的,唯一的例外是共享内存区。但是,系统空间却是”公共场所“,所以内核显然可以提供这样的条件。除此之外,那就是双方都可以访问的外设了。在这个意义上,两个进程当然也可以通过磁盘上的普通文件交换信息,或者通过”注册表“或其他数据库中的某些表项和记录交换信...原创 2018-04-22 11:12:25 · 132 阅读 · 0 评论 -
调研同步与互斥概念原理,了解生产者消费者原理
现代操作系统提供了一个并发控制环境,即系统中同时活动着多个不同的进程,这些进程共享同一个CPU,内存或I/O设备。特别是对于linux操作系统来说,其多任务,多用户,分时实时混合的性质决定了多个进程在某种程度上彼此依赖或相互制约的关系,这些关系我们叫“并发关系”,按其性质可以分为同步和互斥两类。进程互斥由于各进程要求共享资源,而且有些资源需要互斥使用,因此各进程间竞争使用这些资源,进程的这种关系为...原创 2018-04-21 11:11:43 · 445 阅读 · 0 评论 -
编写简单的add/sub/mul/div函数,并打包成动/静态库,并分别使用
静态库(.a):在windows下后缀为(.lid),程序在编译链接的时候把库的代码链接到可执行文件里。程序运行的时候将不再需要静态库。动态库(.so):在windows下后缀为(.dll),程序在运行的时候才去链接动态库的代码,多个程序共享使用库的代码。一个与动态库链接的可执行文件仅仅包含它用到的函数入口地址的一个表,而不是外部函数所在目标文件的整个机器码。在可执行文件开始运行以前,外部函数的机...原创 2018-04-15 21:10:16 · 3832 阅读 · 0 评论 -
练习open/read/write/close等文件相关系统调用接口,纵向对比fd与FILE结构体
写文件#include<stdio.h>#include<sys/types.h>#include<sys/stat.h>#include<fcntl.h>#include<string.h>int main(){ umask(0);//在创建新文件或目录时屏蔽掉新文件或目录不应有的访问允许权限 int fd = open("file",...原创 2018-04-15 17:05:36 · 378 阅读 · 0 评论 -
查找资料, 了解以下Linux下的重要目录/proc, /sys, /SElinux, /bin, /usr/lib, /usr/local, /var, /tmp
/proc是linux内核中提供的文件系统,在运行访问内核数据结构,改变内核设置的机制。proc是一个伪文件系统,它只存在内存当中,而不占用外存空间。它以文件系统的方式为访问系统内核数据的操作提供接口。用户和应用程序可以通过proc得到系统的信息,并可以改变内核的某些参数。由于系统的信息,如进程,是动态改变的,所以用户或应用程序读取proc文件时,proc文件系统是动态从系统内核读出所需信息并提交...原创 2018-03-08 22:21:26 · 370 阅读 · 0 评论 -
查找资料, 了解以下重要命令. du, df, top, free, pstack, su, sudo(sudo -, sudo -s), adduser, password
du 命令格式:du [选项] [文件] 命令功能:显示每个文件和目录的磁盘使用空间。 命令参数:-a 显示目录中个别文件的大小。 -b 显示目录或文件大小时,以byte为单位。 -c 除了显示个别目录或文件的大小外,同时也显示所有的目录或文件的总和。 ...原创 2018-03-08 23:00:23 · 233 阅读 · 0 评论 -
查找资料, 学习如何使用命令安装gcc/g++, gdb, vim
安装 gcc:yum install gcc安装g++:yum install gcc-c++安装gdb:<1>先切换到root权限。centos点help。在终端下打开火狐网,复制 https://mirrors.aliyun.com/回车(在联网的情况下并且手动复制粘贴) <3>再输入yum list | grep gdb 安装vim...原创 2018-03-10 08:53:21 · 172 阅读 · 0 评论 -
linux总结命令和快捷方式
安装和登录命令:shutdown(关机),install(升级软件,安装数据),exit(退出系统),halt(关电源),tty(查看当前终端)文件处理命令:file(查看文件准确类型),mkdir(创建一个目录),grep(从文件里过滤内容),mv(移动文件或重名),ls(查看目录下内容),cat(将结果写入键盘),cd(查看当前位置),cp(拷贝)clear(清屏),more(屏下显示文件的百...原创 2018-03-10 10:54:03 · 786 阅读 · 0 评论 -
调研task_struct结构体, 理解结构体中的各个字段的含义.
Linux内核通过一个被称为进程描述符的task_struct结构体来管理进程,这个结构体包含了一个进程所需的所有信息。task_struct结构:1.进程状态,将记录进程在等待,运行或死锁。2.调度信息,由哪个调度函数调度,怎样调度等。3.进程的通讯情况4.因为要插入进程树,必须有联系父子兄弟的指针,当然是task_struct型5.时间信息,比如计算好执行的时间,以便cpu分配。6.标号,决定...原创 2018-03-17 11:34:24 · 268 阅读 · 0 评论 -
除了vim, 还有哪些常用的编辑器, 并能够横向对比编辑器之间的区别和优缺点
vim是从vi发展出来的一个文本编辑器。代码补完、编译错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。sed是一种流编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”,接着用sed命令处理缓冲区的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,只到文件末尾。文件内容并没有改变,除非你使用重定向的存储输出。sed主要用来自动编辑一个...原创 2018-03-12 13:40:19 · 821 阅读 · 0 评论 -
自行查找资料, 调研除了gcc, 还有哪些常用的牛逼的编译器(不限制编程语言, 不限制平台).
windows常用的都是vs 、vs,OSX用clang,clang的错误提示比其他要好很多语言支持比较好,但是编出来的程序性能比gcc差很多,很多细粒度的优化没有人做。原创 2018-03-12 13:59:19 · 499 阅读 · 0 评论 -
为什么调试的时候需要编译选项中添加 -g. 请自行调研readelf命令
用gdb进行调试纠错前必须要在编译选项中添加“-g”,“-g”标志是对程序进行调试性编译时常用的选项。我们需要给每一个需要调试的源文件都加上这个选项。它将使用特殊版本的C语言标准库完成编译和链接操作,给库函数加上程序调试方面的支持。编译器会把这些标志自动传给链接器。readelf命令用来显示一个或者多个elf格式的目标文件的信息,可以通过它的选项来控制显示哪些信息。这里的elf-file(s)就表...原创 2018-03-12 14:36:45 · 843 阅读 · 0 评论 -
自行调研Linux下软件安装的几种方式(源码安装, rpm安装, yum安装). 重点要理解rpm安装和yum安装的区别.
1、源码安装。源码安装的步骤:编译源码,然后安装。<1>安装准备a.首先用yum安装gcc,用于编译源码b.官网下载源码包c.winSCP windows与linux传输文件(如果直接用要安装的linnux电脑下载就不用传输了)<2>安装过程a.解压b.进入解压后的目录配置软件 ./configure#大多数情况下源码包都会带configure这样一个配置工具,具体使用方...原创 2018-03-12 15:24:35 · 579 阅读 · 0 评论 -
项目1
http协议,超文本传输协议,是用于从www服务器传输超文本到本地浏览器的传输协议。它可以使浏览器更加高效,使网络传输减少。它不仅保证计算机正确快速的传输超文本文档,还确定传输文档中的哪一部分,以及哪部分内容首先显示等。这就是你为什么在浏览器中看到的网页地址都是以”http://”开头的原因。 由于HTTP协议是基于请求/响应方式的(相当于客户端/服务器)。一个客户端与 我们的http服务...原创 2018-09-07 18:32:41 · 323 阅读 · 0 评论