首页
学习
活动
专区
圈层
工具
发布

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

3. dup()和dup2()函数 包含头文件 #include 函数原型 int dup(int oldfd); int dup2(int oldfd, int newfd);...,它们两个的功能和区别就是: dup(oldfd):复制文件描述符,返回一个当前空闲的最小文件描述符,并且让这个文件描述符指向oldfd所指向的文件;dup() uses the lowest-numbered...argc < 2) { printf("not found string\n"); return -1; } /*每开启一个进程,默认打开 0...(stdoutfd, STDOUT_FILENO); printf("second: %s\n", argv[1]); close(fd); return 0; } 我们编译运行一下...注意:这里的 "hello\ linux" 中,"\ " 使通过转义符把空格的特殊含义去掉,如果不加转义符,shell会把空格分开的内容当作两个字符串,通过转义符就可以实现在字符串中写入空格,这是shell

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

    用指针的观点来深入理解dup和dup2的用法

    用指针的观点来深入理解dup和dup2的用法 作者:ejian 2007-09-17 网上有很多资料详细讲解了dup和dup2的用法,有讲得不错的,但总感觉理解起来还是有点困难,通过实践,我发现一种C程序更容易理解的讲解方法...-使用类比指针的方法来阐述dup和dup2的用法,可能更容易让人在非常短的时间内接受,下面的内容是我理解dup和dup2用法的总结,希望对dup和dup2存有疑惑的朋友所有帮助。...下面这句相当于: // STDIN_FILENO = fd[0]; // 从这里可以看出STDIN_FILENO和stdinp指向了不同的位置 dup2(fd[0], STDIN_FILENO); /.../ 在这里可以关闭fd[0],因为我们还可以通过STDIN_FILENO // 来操作这块内存,原因是STDIN_FILENO和fd[0]是指向同一个地方的 // 所以通常会: close(fd[0])...; // 以后STDIN_FILENO可以替代fd[0]了,close(fd[0])相当于 // fd[0] = NULL; // 将fd[0]指向一个有效的安全值,关闭它 // 下面再说说如何恢复:

    1.4K10

    0基础Linux自学之路

    Linux的设计思想是基于Unix的哲学,注重简洁、灵活和可扩展性。Linux内核是Linux操作系统的核心部分,它负责管理计算机的硬件资源和提供系统调用接口。...Linux内核&发行版Linux内核是Linux操作系统的核心部分,它负责管理计算机的硬件资源和提供系统调用接口。...Linux内核版本Linux内核的版本号是由三个部分组成:主版本号、次版本号和修订号。例如,Linux内核的版本号可以是5.3.0。...用户可以根据自己的需求选择适合的Linux内核版本。Linux发行版本Linux发行版是基于Linux内核的操作系统,它包含了用户界面、系统工具和应用软件。...Linux命令练习熟练掌握常用的Linux命令对于学习和使用Linux系统非常重要。下面是一些常见的Linux命令练习:常用命令:掌握一些常用的Linux命令,如cd、ls、pwd等。

    80620

    linux系统编程之文件与IO(五):文件的内核结构file和dup实现重定向

    } 假设test.txt文件的内容是 ABCDEhello 测试如下: simba@ubuntu:~/Documents/code/linux_programming/APUE/File_IO$...利用dup等函数可以进行重定向的步骤是先close输入输出文件描述符,然后执行dup(fd), 这样输入输出文件描述符也指向fd指向的文件,这样就实现了重定向。...此外dup2, fcntl 函数也可以实现,其实不使用这些函数,而直接close(0/1/2)完再open也可以实现。.../* dup dup2 fcntl */ int main(int argc, char *argv[]) {     int fd;     fd = open("test2.txt", O_WRONLY...    //  dup2(fd, 1);     close(1);     if (fcntl(fd, F_DUPFD, 0) 0) //从0开始搜索可用的fd         ERR_EXIT

    1.5K90

    0基础带你入门Linux之简介

    1.Linux和Windows对比 Window很明显的特征就是有C盘、D盘登各种磁盘 我们通过点击不同的盘符,点击里面存储的文件进行查阅的操作 而Linux则很简单,只有一个根目录,也可以说只有一个盘...系统中就是纯命令的操作,没有像Windows界面一样有软件图形的内容 这两个系统还有着用户管理的差别 Windows上用户概念很模糊,但是Linux上就会经常使用到 Linux通过用户权限来指定不同不的用户对文件的使用权限...而且这两个系统的应用方式是不一样的 Windows更多是代替纸质书写的办公,提升日常生活工作的交流效率 Linux一开始很大程度上就面对网络服务,所以Linux是可以随便换桌面的,Linux也有很多不同的桌面系统...Linux虚拟机的版本很多,红帽子、centos以及我用的ubuntu 2.基本常用命令 主要是下面的三个内容,剩下的内容都是分化出去的 who ---我是谁 询问当前登录的用户名是谁 pts/0指的是远程连接...系统中,我们分为两种用户---超级管理员和普通用户 root 是Linux管理员,也称为超级用户 bd 是Linux普通用户,在Ubuntu中,root用户被锁定,当需要是使用的时候可以使用sudo来提权

    32911
    领券