Linux
beyond559
这个作者很懒,什么都没留下…
展开
-
centos7使用tar命令出现错误:gzip: stdin: unexpected end of file
错误描述:这个错误出现在windows上直接将压缩包拖进虚拟机,然后解压出现的错误,原因可能是压缩包不完整,解决办法:1、可能原来的压缩包就是不完整的,可以尝试重新下载新的压缩包2、如果确保原来的压缩包是完整的,可以通过其他路径将压缩包拷进虚拟机(不管是虚拟机上的linux还是远程的linux的服务器,可以通过远程连接linux,将文件传输上去,可以使用SSH Secure File T...原创 2020-04-08 12:52:00 · 1710 阅读 · 0 评论 -
linux U盘的挂载和卸载
通过使用 fdisk -l 命令查看当前的分区情况,当有U盘接入的时候,最下方会有如下打印:说明u盘现在在/dev/sdb1然后使用mount 命令将u盘挂载下来,一般我们都把外部设备挂载在 /mnt目录下,所以 我们使用mount /dev/sdb1 /mnt如果需要卸载U盘,可以使用umount /dev/sdb1 或者 umount /mnt注意:...原创 2020-03-24 22:04:00 · 805 阅读 · 1 评论 -
Linux 目录文件显示绿色高亮的问题
在我们使用linux操作系统的时候,会有一些小问题引起我们的注意,比如下面的问题:这里的 home2 文件被标记为绿色高亮,而其他的目录文件比如 home 文件,却是什么也没有,这是为什么呢? 这是因为其他组权限里面有写入的权限,linux系统认为这是一个高风险的目录文件,因为任何人都可以进入到该目录并进行写入操作,所以就将该目录用...原创 2020-03-18 15:44:53 · 9537 阅读 · 2 评论 -
I/O复用之epoll以及其ET/LT实现
epoll和select以及poll不一样,它是linux独有的一种方法,在linux2.6.11内核版本之后才能够使用。epoll的实现原理和poll、select不一样,首先他最大的不同就是它是按照一组函数来指执行的,其次,它把用户关心的文件描述符上的事件放在内核的一个事件表中,这个事件表的底层实现是红黑树,所以无需每次将文件描述符或事件集传入函数中,但epoll需要一个特别的文件描述符来唯...原创 2019-05-13 17:34:53 · 389 阅读 · 0 评论 -
I/O复用之poll
poll系统调用的实现原理和select类似,都是在指定的时间内轮询一定数量的文件描述符,以测试其中是否有就绪的文件描述符。相关的select可参考我写的关于select的文章I/O复用之select。poll的原型如下:#include<poll.h>int poll (struct pollfd* fds, nfds_t nfds, int timeout);fds 参...原创 2019-05-13 12:41:07 · 108 阅读 · 0 评论 -
I/O复用之select
什么是I/O复用,简单的说就是将所有的文件描述符统一管理起来,包括连接套接字和监听套接字,当其中某些文件描述符有事件发生,也就是文件描述符就绪了,服务器对于有事件发生的文件描述符做recv 操作。通过一个线程或进程管理多个文件描述符。现在来介绍一下select函数,它是一个系统调用函数,原型如下:int select (int maxfd, fd_set *readfds, fd_set *w...原创 2019-05-08 21:29:23 · 193 阅读 · 0 评论 -
什么是内存对齐以及作用
什么是内存对齐?为了解释这个问题,先来介绍下面的例子:#include<iostream>using namespace std;struct A{ char a; short b; int c;};struct B{ short b; int c; char a;};int main(){ cout<<sizeof(A)&...原创 2019-05-04 11:15:47 · 5691 阅读 · 0 评论 -
系统调用函数和库函数的区别
系统调用函数:一台计算机的最低层是硬件设备,通过操作系统来管理这些硬件,如果操作系统是封闭的则这些硬件将无法被其他程序来使用。我们知道操作系统本身也是一个程序,只不过是系统级别的,为了能让其他的程序也能够访问这些硬件设备,操作系统给出了一些接口,这些接口就是我们所说的系统调用函数。通过这些接口就可以访问计算机的硬件设备。系统调用函数运行在系统的内核态,而调用则由用户调用,所以在用户态。这里就需要...原创 2019-05-02 12:00:43 · 734 阅读 · 0 评论 -
LinuxUDP网络编程
UDP是无连接的,没有TCP中的监听和连接,客户端只要知道服务的地址和端口号就能向其发送消息,不管服务器是否开启,也不能确定服务器是否真的接收到了消息。因为没有了监听和连接,所以必须在发送和接收函数中包含地址和端口号。主要的函数就是recvfrom和sendto,具体函数入下:#include <sys/types.h>#include<sys/socket.h>...原创 2019-04-09 23:42:07 · 221 阅读 · 0 评论 -
MyMiniBash之clear命令
在linux中clear命令可以刷新整个屏幕,但本质上还是只是让终端向后上翻了一页,滚动屏幕还是可以看到之前的信息。而reset命令将完全刷新整个屏幕,之前的终端输入操作信息都将会清空,具体地clear命令的实现:#include<stdio.h>int main(){ fputs("\x1b[2J\x1b[H",stdout); exit(0);}这些都是VT10...原创 2019-04-03 15:56:36 · 260 阅读 · 0 评论 -
LinuxTCP/IP网络编程
通用socket地址#include<bits/socket.h>struct sockaddr{sa_family_t sa_family;char sa_data[14];//因为这是端口号和ip地址共用,不知道哪里是端口号,哪里是ip地址,所以一般不用这个结构体};一般使用专用结构体struct sockaddr_in{sa_family sin_family...原创 2019-04-08 00:29:25 · 1253 阅读 · 0 评论 -
Linux基本文件操作函数汇总
1、open#include<sys/types.h>#include<sys/stat.h>#include<fcntl.h>int open(cosnt char *pathname,int flags);int open(cosnt char * pathname,int flags, mode_t mode);pathname 为欲打开文件路...原创 2019-03-28 12:16:34 · 418 阅读 · 0 评论 -
MyMiniBash之sleep命令
通过调用sleep函数来实现,主要难点在于将命令中的字符串转换为整型解决方案为使用sscanf函数实现代码:#include<stdio.h>#include<unistd.h>#include<stdlib.h>#include<string.h>#include<assert.h>int main(int argc, ...转载 2019-04-07 00:53:22 · 141 阅读 · 0 评论 -
MyMiniBash之su命令
su 命令用来切换用户su—》表示默认切换到root用户su uer --》表示切换到user用户主体框架通过mybash–fork–》su–fork–》bash1/切换到那个用户2、输入密码3、密码匹配4、fork子进程调用bash,父进程等待子进程结束实现代码:int main(int argc, char *argv[]){ char *user="root";...原创 2019-04-07 00:39:02 · 235 阅读 · 0 评论 -
MyMiniBash之pwd命令的实现
在linux中,一切皆文件,设备是一种文件,目录也是一种文件,只不过目录文件比较特殊,它里面存储的是一张对应表,保存了文件名和i节点的对应关系表,而i节点才是记录此文件的详细信息的结构,比如文件大小、属性权限、存在硬盘的那个块的等。内核为每一个目录都设置了一个指向自己的i节点入口,即".",还有一个指向其父节点的入口"..",我们先获取当前目录的i节点编号,但不知道当前目录的名称,可以切换到父目...原创 2019-04-06 14:31:52 · 164 阅读 · 0 评论 -
进程的基本概念
进程:运行或加载在内存上的程序(程序的一个实例化,一次执行过程)程序:存储在内存上的一个可执行的二进制文件操作系统为每个进程维护一个PCB,通过PCB/进程控制块(底层是一个结构体,包含的、进行属性)对一个进程实体进行间接操作,而不是直接控制。系统通过双向链表来管理所有的PCB.进程实体:程序被加载在内存上的内容。僵死进程:1、每一个程序都对应一个进程,在进程结束的时候,进程的实体会被销毁...原创 2019-03-10 11:13:35 · 108 阅读 · 0 评论 -
进程的几种状态、状态转换图以及导致装换的事件
进程的几种状态:创建、就绪、阻塞、执行、退出状态转换图:进程的状态转换主要是就绪、执行、阻塞之间的相互转换,创建和退出主要是原创 2019-02-20 18:37:08 · 3828 阅读 · 0 评论 -
ubuntu重启networkmanager的指令
sudo service network-manager stopsudo rm /var/lib/NetworkManager/NetworkManager.statesudo service network-manager start有可能解决网络图标消失的情况,如果没解决的话,可以尝试在以上代码之后加上sudo vim /etc/NetworkManager/nm-system-se...原创 2019-02-20 11:04:39 · 11761 阅读 · 0 评论 -
Linux笔记整理--基础指令
Linux和windows的基础区别:1、linux是基于命令行,windows是图形化界面;2、Linux是免费开源的;3、Linux的应用有服务器、集群、操作要求、系统功能完善占据资源尽量少;而windows是应用于个人的;4、Linux的文件系统是EXT4,而windows是NTFS;5、Linux只有一个根目录,而windows有盘符的区分。6、Linux上是可以运行多个用户同...原创 2019-03-29 00:28:56 · 294 阅读 · 0 评论