linux知识复习1-dup dup2
#include <sys/stat.h>
#include <string.h>
#include <fcntl.h>
#include <stdio.h>
#include <unistd.h>
int main(void)
{
#define STDOUT 1
int nul, oldstdout;
char msg[] = "This is a test";
/* create a file */
nul = open("DUMMY.FIL", O_CREAT | O_RDWR, S_IREAD | S_IWRITE);
/* create a duplicate handle for standard
output */ oldstdout = dup(STDOUT); //复制用于后续恢复
/*
redirect standard output to DUMMY.FIL
by duplicating the file handle onto the
file handle for standard output.
*/
dup2(nul, STDOUT); //将标准输出重定向到nul
/* close the handle for DUMMY.FIL */
close(nul);
/* will be redirected into DUMMY.FIL */
write(STDOUT, msg, strlen(msg));
/* restore original standard output
handle */
dup2(oldstdout, STDOUT); //将标准输出重定向到之前保存的标准输出
/* close duplicate handle for STDOUT */
close(oldstdout);
return ;
}
--------------------------------
进程fd表 ---- 文件表----v节点表
-------------------------------
指向关系改变:
dup2(nul, STDOUT)
STDOUT指向了nul的文件表;
dup2(oldstdout, STDOUT)
STDOUT指向了oldstdout保存的文件表;
打开文件的每个进程都有独立的文件表项,可以使每个进程都有自己对于该文件的当前偏移;
详细参考:
http://www.cnblogs.com/GODYCA/archive/2013/01/05/2846197.html
linux知识复习1-dup dup2的更多相关文章
- linux下dup/dup2函数的用法
系统调用dup和dup2能够复制文件描述符.dup返回新的文件文件描述符(没有用的文件描述符最小的编号).dup2可以让用户指定返回的文件描述符的值,如果需要,则首先接近newfd的值,他通常用来重新 ...
- 【C】——dup/dup2用法
相信大部分在Unix/Linux下编程的程序员手头上都有<Unix环境高级编程>(APUE)这本超级经典巨著.作者在该书中讲解dup/dup2之前曾经讲过“文件共享”,这对理解dup/du ...
- 文件操作篇 close creat dup dup2 fcntl flock fsync lseek mkstemp open read sync write
文件操作篇 close creat dup dup2 fcntl flock fsync lseek mkstemp open read sync write close(关闭文件) 相关函数 ope ...
- VFS dup ,dup2
Linux支持各种各样的文件系统格式,如ext2.ext3.reiserfs.FAT.NTFS.iso9660等等,不同的磁盘分区.光盘或其它存储设备都有不同的文件系统格式,然而这些文件系统都可以mo ...
- 【APUE】第3章 文件I/O (3) 文件共享、原子操作、函数dup/dup2、函数sync/fsync/fdatasync、函数fcntl、函数ioct1、目录/dev/fd 使用说明
1.文件共享 UNIX系统支持在不同的进程间共享打开文件.为了说明这种共享,以下介绍内核用于所有I/O的数据结构. 内核使用3种数据结构表示打开文件,它们之间的关系决定了在文件共享方面一个进程对另一个 ...
- Linux知识:/root/.bashrc与/etc/profile的异同
Linux知识:/root/.bashrc与/etc/profile的异同 要搞清bashrc与profile的区别,首先要弄明白什么是交互式shell和非交互式shell,什么是login shel ...
- J2EE程序员应该要掌握的linux知识
J2EE程序员应该要掌握的linux知识 大型J2EE应用都在建构在linux环境下的.开发环境下我们可以通过samba映射成本地的网络驱动器,直接在windows环境下进行编程调试.但是最后的发布还 ...
- My way on Linux - 知识梳理计划
知识梳理计划图 近期计划把自己学习的工作中用到的Linux知识梳理下,敬请期待.
- 欢迎关注我的微信公众账号:Linux技巧(微信号:irefactoring),一起学习Linux知识~~~
最近很少写博客了,一方面是近期工作比较繁忙,第二是把精力都放在GitHub和读源码去了. 申请了一个微信公众账号:Linux技巧 微信ID:irefactoring(意思是爱重构) ========= ...
随机推荐
- Python 套接字的使用 (1)
获取设备名称和IPv4地址 socket.gethostname() socket.gethostbyname(host_name) def print_machine_info(): host_ ...
- linux学习总结----对象
内置对象: Date new Date() --->系统当前时间 var d=new Date() d.getFullYear() getMonth() getDay() getDate() g ...
- python终极篇 --- django---班级管理系统
周末没事自己写了个班级管理系统,虽然简单,但也算个前期学习的总结吧 from django.db import models # Create your models here. class Banj ...
- 领扣[LeetCode]从零开始[使用C++][1,10]
0.序 以后不做后端开发是不是就用不到C++了?真香.话不多说,我已经躺倒在第一题上了.不贴题目了,持续更新. 1.两数之和 原文:https://www.cnblogs.com/grandyang/ ...
- c# log
public static void WriteMsg(string logName, string msg) { try { //string path = Path.Combine(". ...
- EasyUI 布局 - 动态添加标签页(Tabs)
首先导入js <link rel="stylesheet" href="../js/easyui/themes/default/easyui.css"&g ...
- pta结构体链表作业
一.PTA实验作业 7-2 1. 本题PTA提交列表 2. 设计思路 题目要求按照年龄从大到小的顺序依次输出,于是我只要用冒泡法把结构体变量从大到小排列就可以了. 3.本题调试过程碰到问题及PTA提交 ...
- tar 加密压缩和解密解压
加密压缩 tar -czvf - file | openssl des3 -salt -k password -out /path/to/file.tar.gz 解密解压 openssl des3 - ...
- Redis--各个数据类型最大存储量
原文地址:https://redis.io/topics/data-types Strings类型:一个String类型的value最大可以存储512M Lists类型:list的元素个数最多为2^3 ...
- 在浏览器中从FTP下载文件
public static class FTPHelper { /// <summary> /// 得到特定FTP目录的文件列表 /// </summary> /// < ...