linux /dev 常见特殊设备介绍与应用[loop,null,zero,full,random]

React Antd Form.List 组件嵌套多级动态增减表单 + 表单联动复制实现 目前想到是用浏览器本地存储存下每次的 storeId 值,仅在有值的才写进去,每次读取 storeId 时候先判断 props 传过来的是否是空值,是空值就从 storage 里面取。问题一:复制的时候由于存在表单联动,直接获取 form 对应字段的值虽然能附上值但是复制出来的下拉框没值 ,因为 useMemo 发生变化。复制时传给子组件的 id 为 先为有效值后不存在,所以缓存的下拉框选项值变为空。有一个页面的组件,其中一部分需要用到。综合以上需求,大致的页面样子。 阅读详情

原文地址:http://www.cnblogs.com/chengmo/archive/2010/10/25/1857775.html

inux是文件型系统,所有硬件如软件都会在对于的目录下面有相应的文件表示。对于dev这个目录,我们知道它下面的文件,表示的是linux的设备。在windows系统中,设备大家很好理解,象硬盘,磁盘指的是实实在在硬件。而在文件系统的linux下面,都有对于文件与这些设备关联的。访问它们就可以放到实际硬件,想想还是linux灵活了。变成文件,操作该多简单了。不用调用以前com,prt等接口了。直接读文件,写文件就可以向设备发送读或者写操作了。 按照读写存储数据方式,我们可以把设备分为以下几种:字符型设备,块设备,伪设备。

 

一、设备分类

 

  • 字符型设备

字符设备是指每次与系统传输1个字符的设备。这些设备节点通常为传真、虚拟终端和串口调制解调器、键盘之类设备提供流通信服务,它通常不支持随机存取数据。 字符设备在实现时,大多不使用缓存器。系统直接从设备读取/写入每一个字符。例如,键盘这种设备提供的就是一个数据流,当你敲入“cnblogs”这个字符串时,键盘驱动程序会按照和输入完全相同的顺序返回这个由七个字符组成的数据流。它们是顺序的,先返回c,最后是s。

  •  块设备

块设备是指与系统间用块的方式移动数据的设备。这些设备节点通常代表可寻址设备,如硬盘、CD-ROM和内存区域。

块设备通常支持随机存取和寻址,并使用缓存器。操作系统为输入输出分配了缓存以存储一块数据。当程序向设备发送了读取或者写入数据的请求时,系统把数据中的每一个字符存储在适当的缓存中。当缓存被填满时,会采取适当的操作(把数据传走),而后系统清空缓存。它与字符设备不同之处就是,是否支持随机存储。字符型是流形式,逐一存储。

  • 伪设备

在类Unix操作系统中,设备节点并不一定要对应物理设备。没有这种对应关系的设备是伪设备。操作系统运用了它们提供的多种功能。部份经常使用到的伪设备包括: null,zero,full,loop,random,urandom

二、特殊设备及使用

这里说到特殊设备除了硬盘主板等,只是它在linux shell命令里面,有特殊的作用,因此把它们单独拿出来。这些设备分别是:

/dev/stdin

/dev/stdout

/dev/stderr

/dev/null

/dev/zero

/dev/full

/dev/random,urandom

/dev/fd

/dev/tcp|upd

/dev/loop

 

1、标准输出输入设备

还记得上次说的,linux重定向吗?可以看下:linux shell数据重定向(输入重定向与输出重定向)详细分析 。它们就是与几个特殊文件描述符对应,fd0,fd1,fd2 (stdin,stdout,stderr)

如:

?
1
2
3
4
5
6
7
8
9
10
11
[chengmo@centos5 shell]$ cat >teststdin< /dev/stdin
test
#ctrl+D
#cat从/dev/stdin获得数据,然后将标准输出,输入的到teststdin文件
[chengmo@centos5 shell]$ cat teststdin
test
 
[chengmo@centos5 shell]$ cat >teststdin
test
#ctrl+D
#不指定输入,默认输入设备就是/dev/stdinn

 

/dev/stdin指的就是键盘设备

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
[chengmo@centos5 shell]$ cat test .sh > /dev/stdout | grep 'echo'
echo "very good!" ;
echo "good!" ;
echo "pass!" ;
echo "no pass!"
#/dev/stdout指向就是标准输出,因此重定向给它的数据,最终发送到屏幕上(fd1)
     
[chengmo@centos5 shell]$ cat test .sh  | grep 'echo'           
echo "very good!" ;
echo "good!" ;
echo "pass!" ;
echo "no pass!" ;
 
     
[chengmo@centos5 shell]$ cat test .sh > /dev/stderr | grep 'echo'  
#!/bin/sh
 
scores=40;
if [[ $scores -gt 90 ]]; then
     echo "very good!" ;
elif [[ $scores -gt 80 ]]; then
     echo "good!" ;
elif [[ $scores -gt 60 ]]; then
     echo "pass!" ;
else
     echo "no pass!" ;
fi ;
#/dev/stderr 指是错误输出,默认也是输出到屏幕上面,但是它的内容不能通过管道传递给grep,管道只能传递标准输出

/dev/null设备

是个黑洞设备,它丢弃一切写入其中数据,空设备通常被用于丢弃不需要的输出流。记得当年用windows时候,有个类似的设备:NUL ,跟这个功能一样。任何写入该设备数据都会被丢弃掉。从这个里面读取数据返回是空。将一些不用内容经常发送给这个设备,丢弃不需要的数据。

如:

?
1
2
[chengmo@centos5 shell]$ cat /dev/null
[chengmo@centos5 shell]$ cat test .sh > /dev/null
?
1
#读该设备为空,写入该设备数据都丢弃了

 

/dev/zero设备

在类UNIX 操作系统中, /dev/zero 是一个特殊的文件,当你读它的时候,它会提供无限的空字符(NULL, ASCII NUL, 0x00)。其中的一个典型用法是用它提供的字符流来覆盖信息,另一个常见用法是产生一个特定大小的空白文件。

如:

?
1
2
3
4
5
6
7
8
9
10
11
12
[chengmo@centos5 shell]$ dd if = /dev/zero of=testzero count=1024 bs=1024
1024+0 records in
1024+0 records out
1048576 bytes (1.0 MB) copied, 0.0107194 seconds, 97.8 MB /s
#创建一个大小为1M文件,该文件一个块是1024字节,一共是1024块(刚好1M),用/dev/zero文件内容填充它。输出创建到:testzero文件
 
 
[chengmo@centos5 shell]$ dd if = /dev/zero of= /dev/ 磁盘分区
#这个命令一定不要随便用,有点象windows里面的粉碎文件工具。不过它是用\0x00填充整个分区。这样做数据是不可以恢复的了。
 
[chengmo@centos5 shell]$ cat /dev/zero >testinputzero
#这个命令也不能随便使用咯,/dev/zero设备一个特效是,如果你读取的话,是一个死循环会输出无穷的\x00,这样你将创建一个用\x00填充的文件。如果你没有限制该用户磁盘配额。它将耗尽整个磁盘空间。

 

在linux资源配额限制里面,如果没有现在普通用户的磁盘空间利用,或内存使用。一个普通用户就可以通过上面方法一会就塞满整个磁盘。也可以通过while(true) {fork……}类程序,启动无限线程,耗尽整个系统内存。

 

/dev/full设备

类Unix系统中,/dev/full(常满设备)是一个特殊设备文件,总是在向其写入时返回设备无剩余空间(错误码为ENOSPC),读取时则与/dev/zero相似,返回无限的空字符(NULL, ASCII NUL, 0x00)。这个设备通常被用来测试程序在遇到磁盘无剩余空间错误时的行为。

如:

?
1
2
3
4
5
[chengmo@centos5 shell]$ echo 'chengmo' > /dev/full
- bash : echo : write error: 设备上没有空间
[chengmo@centos5 shell]$ echo $?
1
#命令执行返回错误
?
1
 

/dev/random[urandom]

在类UNIX操作系统中,/dev/random是一个特殊的设备文件,可以用作随机数发生器或伪随机数发生器。它允许程序访问来自设备驱动程序或其它来源的背景噪声。常用作随机数发生器。具体参考:linux shell实现随机数多种方法(date,random,uuid)

 

 /dev/fd

记录用户打开的文件描述符

[chengmo@centos5 shell]$ ls /dev/fd/
0  1  2  3

详细参考:

linux shell数据重定向(输入重定向与输出重定向)详细分析 文件描述符介绍。

 

/dev/tcp[udp]/host/port

读取该类形式设备,将会创建一个连接host主机port端口的tcp[upd]连接。打开一个socket通讯接口。

详细使用可以参考:

linux shell 脚本实现tcp/upd协议通讯(重定向应用)

 

/dev/loop

在类UNIX操作系统中,Loop设备 可以把loop 文件,作为块设备挂载使用。

如:

[chengmo@centos5 shell]$mount -o loop example.img /home/chengmo/img

#将img镜像文件挂载到/home/chengmo/img目录下面,有了这个设备,我们不需要通过虚拟光驱就可以读虚拟磁盘格式的文件。


linux dev 常见特殊设备介绍与应用(loop,null,zero,full,random) 主要介绍了linux dev 常见特殊设备介绍与应用(loop,null,zero,full,random),需要的朋友可以参考下 立即下载

相关推荐

秦时明月6.2魔改版_从零到一部署指南_含安卓客户端配置与GM后台直通

本文详细介绍了秦时明月6.2魔改版的从零到一部署指南,包括环境准备、服务端安装、安卓客户端配置以及GM后台直通等关键步骤。特别针对安卓客户端配置和GM工具使用提供了实用技巧,帮助用户快速搭建并优化游戏服务器,确保稳定运行。

weixin_42522964的博客 315

linux包含两种设备文件,【OS】Linux下 /dev 常见特殊设备介绍与应用[loop]

在这里详细介绍一下loop设备。在进行某些测试的时候,往往需要新建一些磁盘分区或者设备等,此时对硬盘进行重新划分往往不太方便。在这种情况下,可以通过loop伪设备来实现循环挂载,从而达到目的。在使用之前,循环设备必须与现存文件系统上的文件相关联。这种关联将提供给用户一个应用程序接口,接口将允许文件视为块特殊文件(参见设备文件系统)使用。因此,如果文件中包含一个完整的文件系统,那么这个文件就能如同磁...

weixin_34954140的博客 874

飞书日历同步Outlook翻车?我踩过的坑和最终用Google Calendar成功的完整配置记录

本文详细记录了从Outlook日历同步到飞书时遇到的常见问题及解决方案,特别是通过Google Calendar实现稳定同步的完整配置流程。文章揭示了Outlook同步方案易翻车的原因,并提供了Google Calendar的避坑指南、高级技巧和企业级部署建议,帮助用户高效实现日历同步。

weixin_33724046的博客 313

Linux特殊设备文件(字符设备文件和块设备文件)(/dev/null、/dev/zero、/dev/full、/dev/tty、/dev/fd)(主设备号和次设备号)

在Linux中,每个硬件设备都被视为一个文件,这些特殊的设备文件通常位于/dev目录下。这是因为在UNIX哲学中有一种思想,那就是“一切皆文件”。这样的设计让操作系统的交互更加统一和简洁。设备文件主要分为两种类型:字符设备文件和块设备文件。字符设备文件(Character Device Files):它们表示可以以字节为单位进行读写的设备。块设备文件(Block Device Files):它们表示可以以块为单位进行读写的设备。

Dontla的博客 4875

Transformer模型详解(图解最完整版)

Transformer由论文提出,现在是谷歌云TPU推荐的参考模型。论文相关的Tensorflow的代码可以从GitHub获取,其作为Tensor2Tensor包的一部分。哈佛的NLP团队也实现了一个基于PyTorch的版本,并注释该论文。在本文中,我们将试图把模型简化一点,并逐一介绍里面的核心概念,希望让普通读者也能轻易理解。Transformer 与 RNN 不同,可以比较好地并行训练。

2501_91695094的博客 2699

RK3588 C++ MeloTTS 推理

本文介绍了基于RK3588平台和RKNN工具链实现的端侧语音合成(TTS)系统。该系统支持中英文混合输入处理,通过自动合并英文单词、转换标点符号等方式预处理文本,并将其转换为音素和声调序列。核心推理流程包含编码器、中间处理和解码器三个阶段:编码器将音素序列转为隐藏状态,中间处理调节音调和语速,解码器生成最终波形。代码示例展示了输入数据设置和模型推理过程,利用RK3588内置NPU实现高效语音合成。该系统展现了在边缘计算设备上实现复杂AI任务的能力。

J。 199

Linux系统----伪设备

标准输入输出设备文件伪设备的挂载。

醉卧考场君莫笑 759

【OS】AUTOSAR OS Alarm实现原理

AUTOSAR OS Alarm实现原理

qq_36056498的博客 1022

linux中rm的基本用法 /dev/zero的作用

dev/zero------该设备无穷尽地提供0,可以使用任何你需要的数目----设备提供的要多的多。他可以用于向设备或文件写入。-i和-f正好相反,在删除文件或目录之前,系统会给出提示,使用-i可以有效防止不小心删除有用的文件或目录。-f强制删除,和-i选项相反,使用-f,系统将不再询问,是直接删除目标文件或目录。-r递归删除,主要用于删除目录,可删除指定目录及包含的所有。/dev/zero,是一个输入设备,你可你用它来初始化文件。【内容[这玩意谨慎使用]】...

cp_dvd的博客 747

【知识分享】IBIS 建模指南 03

本文介绍了差分缓冲器的数据提取方法,重点分析了差分系统与单端系统的核心差异。文章详细阐述了差分接收机和驱动器的结构特点、工作原理及建模方法,指出全差分结构具有优异的电源噪声抑制能力。针对IBIS建模规范,作者提出了三维I-V曲面数据提取技术,并介绍了共模/差模电流分离、片上端接处理以及V-T表生成的解决方案。文章还探讨了差分电容(C_diff)的测量方法和数据简化策略,为复杂差分缓冲器的精确建模提供了系统化的技术路径。

一只豌豆象的博客 1281

电路设计仿真软件:Mentor Graphics_(11).MentorGraphics软件操作与技巧

/ 定义自定义仿真命令// 加载设计文件// 运行仿真// 主函数return 1;return 0;// 自定义设计检查// 获取设计中的所有模块// 遍历所有模块// 检查模块名称是否符合规范if (!// 检查模块中的所有引脚if (!// 主函数main() {通过本节的学习,您应该已经掌握了如何在 Mentor Graphics 中进行二次开发,包括使用 Tcl、C++ 和 Python 进行基本和高级操作。

kkchenjj的博客 1637

Antd的Form.List使用

Antd的Form.List使用

前端小白的逆袭 1万+

antd4 Form.List动态增减表单项,默认展示一项

下面是antd4官方例子:https://ant.design/components/form-cn/#components-form-demo-dynamic-form-items-complex 默认是没有第一项的,我们点击添加,出现第一项。 如果我想默认展示第一项,如下: 设置Form.List的默认值为空,就可以默认显示第一项。 核心代码: initialValue={[{}]} <Form name="From1" form={form} onFin

MYG_G 6215

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

【Antd】Form.List深度解析:高效处理动态表单与表格嵌套的实战技巧

本文深度解析Ant Design的Form.List组件,重点讲解如何高效处理动态表单与表格嵌套的复杂场景。通过核心概念拆解、实战进阶案例及数据回填与校验技巧,帮助开发者掌握从静态编码到动态生成的转变,利用Form.List简化状态管理,提升开发效率。

p4q5r6s7t的博客 409

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

保留排版的开源 PDF 翻译工具 BabelDOC:论文一键转出双语对照 PDF

BabelDOC 是一个开源 PDF 翻译工具:丢进去一份英文 PDF,它会产出保留原版式、公式不丢乱的双语对照 PDF 和单语译文 PDF 两种文件。下面按"先判断、再跑通、后调参"的顺序,讲清楚它适合什么样的文档、最短路径怎么跑通,以及各类文档该挑哪几个参数。 [![BabelDOC 双语 PDF 翻译概念图:原文与译文双栏对照,公式原样保留](https://raw.gitcode.com

gitblog_00620的博客 377

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

Ant Design Form.List 动态表单嵌套字段实战:基于 field.name 构建可扩展的动态表单

<outline> 本篇文章围绕 [components/form/demo/dynamic-form-items.md](https://link.gitcode.com/i/cdbdbb5e1081821b9545876d71c8e747) 与其配套示例展开,讲解在 antd(React)中如何基于 `Form.List` 实现"整行动态增删 + 每行内部多字段"的表单结构。文中的核心技巧—

gitblog_00300的博客 769

antd Form.list嵌套Form.list

import { Form, Input, Button, Space, Select } from 'antd'; import { MinusCircleOutlined, PlusOutlined } from '@ant-design/icons'; const { Option } = Select; const areas = [ { label: 'Beijing', value: 'Beijing' }, { label: 'Shanghai', value: 'Shanghai

zxz_learn的博客 6854

antd Form 表单组件完全指南:数据域管理、校验与动态表单实战(基于 ant-design 组件库)

本指南以 ant-design 仓库中 [Form 官方中文文档](https://link.gitcode.com/i/d25805721ee0d1cd82dd9e51485d26ce) 为骨架,结合 [组件源码](https://link.gitcode.com/i/01fc62ed1676253ca64e058255b536d8)、[表单实例实现](https://link.gitcode.

gitblog_00437的博客 471

为什么开发者要直接编辑源码?usgc-machine-report 机器报告对配置化工具模式的挑战

usgc-machine-report(TR-100 机器信息报告)是一个只用单个 bash 脚本实现的终端工具:它会在你 SSH 登录服务器时,在终端里直接打印出一张系统信息报告表。有意思的是,这个项目反其道而行之——它**不提供配置文件**,而是鼓励你直接编辑源码。这背后是一种对"配置化工具模式"的公开挑战。 ## 它是什么:一眼看清服务器状态的机器报告工具 Machine Report

gitblog_00115的博客 400

antd的form.list中如何setFieldsValue

主要就这几行代码: const newData = [ ...getFieldValue("areaData") ]; newData[field.key] = { ...newData[field.key], typeData: testData }; setFieldsValue({ areaData: newData }); 详情看下面: import React, { useState } from "react"; import "./styles.css"; import {

m0_37679060的博客 9224

Ant Design 表单复杂动态增减:Form.List 多层嵌套的完整实战指南

> 本指南围绕 Ant Design(antd)Form 组件中「多个 `Form.List` 嵌套」这一动态表单场景展开。官方文档以示例 [复杂的动态增减表单项](https://link.gitcode.com/i/b912f3537a11be54522267918270f25b) 演示了如何在一条可动态增删的「主记录」内部再维护一条可动态增删的「子列表」,数据形态对应典型的 `items[]

gitblog_00161的博客 523

Antd表单Form.List动态操作列,动态修改值

背景:React+TypeScript+Umi+Antd。 适用于需要调用方法改form.list的值

weixin_42748141的博客 3594

antd 动态添加表单_React + antd 实现动态表单添加删除功能

/*eslint-disable multiline-ternary*/import React, { useState, useEffect} from'react';import { useHistory, useLocation } from'react-router-dom';import { Form, Input, Button, Radio, Select } from'antd';...

weixin_42521058的博客 1811

antd-mobile Form 表单组件实战指南:数据域管理、校验体系与动态表单字段

本篇技术指南围绕 antd-mobile 的 Form 表单组件展开,系统讲解其自带数据域管理的设计理念、从 `Form` / `Form.Item` 到 `Form.Subscribe` / `Form.Array` 的完整 API 用法,并结合仓库源码([src/components/form](https://link.gitcode.com/i/6cce03177e29d1d65b3698

gitblog_00979的博客 218
上一篇: linux c example about threads order
下一篇: 成员运算符(·)和指向结构体成员运算符(->)的区别
July_Yang
博客等级 码龄15年 46粉丝 15原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值