首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

【Linux系统调用API】七、errno()、strerror()、dup()、dup2()

3. dup()和dup2()函数 包含头文件 #include 函数原型 int dup(int oldfd); int dup2(int oldfd, int newfd);...#define _GNU_SOURCE #include int dup3(int oldfd, int newfd, int flags); 函数功能 这两个函数主要用于重定向...,它们两个的功能和区别就是: dup(oldfd):复制文件描述符,返回一个当前空闲的最小文件描述符,并且让这个文件描述符指向oldfd所指向的文件;dup() uses the lowest-numbered...unused descriptor for the new descriptor. dup2(oldfd, newfd):重定向,关闭newfd对应的文件使文件描述符newfd空闲,然后让newfd...注意:这里的 "hello\ linux" 中,"\ " 使通过转义符把空格的特殊含义去掉,如果不加转义符,shell会把空格分开的内容当作两个字符串,通过转义符就可以实现在字符串中写入空格,这是shell

20310
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    linux系统下dup和dup2函数解析

    ----今天接着昨天的话题讲,在昨天的文章里面,我们讲到了文件共享有三种实现方式,其中一种实现方式就是我们今天要讲的dup和dup2函数来实现了;那么咋们也就不废话 了,直接直奔主题吧。...一、dup函数解析: 1)首先我对这个dup函数的用法也不熟,所以说用man手册来查,这是最好的学习方法(或者网上查,有一大波博客会有讲这个的用法,但就我个人而言,还是要养成自己去探索一个新东西的习惯)...函数解析: 1、相比于dup函数,dup2函数它的优势就是可以指定新的文件描述符的大小,用法比较灵活。...\n", fd2); close(fd1); return -1; } 2、dup2和dup函数一样对文件写操作都是接续写的,这里我就不做演示了,写法和dup函数一样。...上面的源代码链接:https://github.com/1121518wo/linux-/tree/master 三、Linux系统下管道符和重定向的学习补充: 这里可以参考刘遄老师写的linux就该这么学

    99430

    linux 编译汇编,linux下的汇编教程

    linux下的汇编教程 第一部分 Linux下ARM汇编语法尽管在Linux下使用C或C++编写程序很方便,但汇编源程序用于系统最基本的初始化,如初始化堆栈指针、设置页表、操作 ARM的协处理器等。...Linux汇编行结构 任何汇编行都是如下结构: [:] [} @ comment [:] [} @ 注释 Linux ARM 汇编中,任何以冒号结尾的标识符都被认为是一个标号,而不一定非要在一行的开始。...Linux 汇编程序中的标号 标号只能由a~z,A~Z,0~9,“.”,_等字符组成。...Linux汇编程序中的分段 (1).section伪操作 用户可以通过.section伪操作来自定义一个段,格式如下: .section section_name [, “flags”[, %type[...如果想将生成的目标代码反汇编,还可以用objdump工具: arm-linux-objdump -D bootstrap.elf 至此,所生成的目标文件就可以直接写入Flash中运行了。

    3.5K31

    汇编语言内存寻址方式--04

    两个基本问题 汇编语言中数据位置的表达 指令要处理的数据有多长?...寻址方式的综合应用 应用问题 解决方案 C语言和汇编的处理方式对比 用div指令实现除法 div 指令 div 指令示例 在内存单元中实施除法 用dup设置内存空间 dup功能和用法 dup用途 举例...---- 本系列文章参考汇编语言第四版和汇编语言程序设计 贺利坚主讲整理而成 ---- 处理字符问题 程序段前缀是Dos下可执行程序载入内存后结构的一部分,位于前0100h部分,它的大致作用有:...设置内存空间 dup功能和用法 ---- dup用途 ---- 举例 assume cs:code, ds:data data segment db 3 dup(0) db 3 dup(0,1,2)...db 80 dup(0) db 3 dup('abc','ABC') data ends code segment mov ax,data mov ds,ax mov ax,4c00H int

    56120

    【汇编语言】数据处理的两个基本问题(三) —— 汇编语言的艺术:从div,dd,dup到结构化数据的访问

    本专栏的汇编语言学习章节主要是依据王爽老师的《汇编语言》来写的,和书中一样为了使学习的过程容易展开,我们采用以8086CPU为中央处理器的PC机来进行学习。...dup是一个操作符,在汇编语言中同db、dw、dd 等一样,也是由编译器识别处理的符号。 它是和db、dw、dd 等数据定义伪指令配合使用的,用来进行数据的重复。...3.2 举例说明 (1) db 3 dup (0) 定义了3个字节,它们的值都是0,相当于db 0,0,0 (2) db 3 dup (0,1,2) 定义了9个字节,它们是 0、1、2、0、1、...abcABCabcABCabcABC' 可见,dup的使用格式如下: db 重复的次数 dup (重复的字节型数据) dw 重复的次数 dup (重复的字型数据) dd 重复的次数 dup...如果没有dup,定义部分的程序就变得太长了,有了dup就可以轻松解决。如下: stack segment db 200 dup (0) stack ends 4.

    14610

    【Android 逆向】x86 汇编 ( align | db | dw | dd | nop | 伪指令 )

    文章目录 一、align 字节对齐指令 二、db / dw / dd 指令 三、nop 指令 总结 一、align 字节对齐指令 ---- align 字节对齐 ; 默认情况下是 16 字节对齐 ;...加载内存数据到高速缓存中 ; 如果没有对齐 , 还要进行地址操作 , 从间隔的内存中获取数据 ; 如果设置了 16 字节对齐 , 数据只有 15 字节 , 那么在数据后会空出一个字节 ; 二、db.../ dw / dd 指令 ---- db 指令 , 用于声明 字符 / 字符串 常量 ; # 声明字符 db 'a' # 声明字符串 db 'a', 'b', 'c' dw 指令 , 用于声明 2...字节短整型 ; dw 0x1234 dd 指令 , 用于声明 4 字节长整型 ; dd 0x12345678 上述 db , dw , dd 指令 , 都是伪指令 , 没有机器码与之对应 ; 三...、nop 指令 ---- nop 指令 是 空指令 , 没有参数 ; 该指令的作用是不做任何操作 ; x86 汇编中 , nop 指令有对应的机器码 0x90 与之对应 ; 总结 ---- align

    79120

    计算机是如何启动的?一文教你自制操作系统

    汇编器的选择 所以我们需要编写一段汇编代码,主流的汇编器主要有四个:微软家的 MASM、Borland 公司的 TASM、开源的 NASM 以及 GNU 汇编器。...推荐是在 windows 平台使用微软家的 MASM,在 linux 平台使用 NASM,网上资料非常多,选择跨平台的 TASM 也可以,至于 GNU 汇编器,他的语法与其他三者的差距最大,除非是非常熟悉...例如 times 3 db 0 指令相当于: db 0 db 0 db 0 这有些类似 MASM 中的 DUP 指令(需要先添加 start label 到程序第一行): db 510-($-start...) dup(0) 6....编译链接 无论你用哪种汇编器完成代码的编写,都要用相应的汇编器执行编译链接,例如,基于 NASM 编写的上述代码可以在 linux 下执行: nasm boot.asm -o boot.bin 生成二进制文件

    2.9K10

    Linux从头学03:如何告诉 CPU,代码段、数据段、栈段在内存中什么位置?

    对数据段中的某个数据进行操作时,直接在汇编代码中通过立即数或寄存器来指定偏移地址; 栈段:本质上也是用来存放数据,只不过它的操作方式比较特殊而已:通过 PUSH 和 POP 指令来进行操作。...一个“完整”的 8086 汇编程序 我们再继续回到 8086 系统中来。 这里描述的地址,经过段地址转换之后,就是一个物理地址,没有经过复杂的页表转换。...还是直接上代码: assume ds:addr1, ss:addr2, cs:addr3 addr1 segment ; 把数据段安排在这个位置 db 32 dup...(0) ; 这 32 个字节,是数据段的大小 addr1 end addr2 segment ; 把栈段安排在这个位置 db 32 dup(0) ; 这...; 其他代码 addr3 ends end start 以上就是一个汇编代码的基本程序结构,我们给它安排了 3 个段。

    2.3K40

    X86 Assemble指令--offset

    offset的作用 offset是一条伪指令,在编译的过程中,编译器会将该伪指令进行计算,并且替换成标号/变量的地址偏移量 基础知识 在数据段中,通过使用db,dw,dd来定义该变量存放数据的大小。...db: define byte,定义一个字节 dw: define word,定义一个字,两个字节 dd: define double word,定义两个字,四个字节 而字符串最好使用db来定义,...而使用dw、dd来定义的话,由于X86是Little Endian排序,所以在内存中的字符的排序会错乱 dup伪指令定义了在编译时,会将dup定义的数据对连续长度的内存空间进行填充。...举例 data segment // 定义长度为4*16=64个字节(长度为40H)的数组,并且以1进行填充 data1 db 40h dup(1) // 定义从data2单元开始,连续存放5,6,8...mov eax,offset data1; 上述汇编指令,在编译的时候会对offset伪指令进行解释。

    1.1K10
    领券