先看例子: 为了强调每个输出都是step by step,所以加了sleep命令,其实可以省略。(echo ....)等同于一个cmd命令,在这里用一组echo命令是为了能清晰的看到整个操作过程。 第一种用法实际上同时打开2次puzzle文件。过程如下: >puzzle ---- 打开puzzle文件(打开文件的操作会在核心中产生一个数据结构-假设叫做foo结构,其中有很多参数,比如file position-以下简称fp,就是其中之一),然后fd1(标准输出)保存着这个指针(具体结构没做深入分析,姑且简化为保存了一个指针),总而言之,通过fd1可以引用到这个核心中的数据结构。 2>puzzle --- 基本同上,再次打开这个文件,核心中会产生一个新的数据结构,同时fd2(标准错误输出)保存了这个结构的指针。 一开始,这两个foo结构中的fp都是0,第一个echo在puzzle文件写入了123456,同时fd1所指向的foo结构中的fp变为6,然后第二个echo要在puzzle文件写入abc,但是它得到的fp是fd2所指向的foo结构中的fp,所以仍然从文件头开始写,所以puzzle中的内容变为abc456,第三个echo就不再罗嗦一遍了,它是从6这个位置开始写操作的。 为什么cmd >file 2>&1这种模式就不会发生混乱呢? 就是因为2>&1,不是再打开一次文件,而是fd2照抄fd1,这两个fd共用一个foo结构,所以它们使用的fp也是同一个。 以下例子可以加深理解这个道理: 对于编程我是个外行,其中如有错误的概念,欢迎指正。 来源:http://bbs.chinaunix.net/forum.php?mod=viewthread&tid=764727 |
相关文章
- 网页上传文件的两种实现:1 ,easyui;2,传统file标签
- Winform主菜单两种实现方式-1.)从工具箱中双击MenuStrip控件,窗体的顶部就会放置一个MenuStrip控件,或者在工具箱中单击MenuStrip控件,拖至窗体中也可以. 2.)在MenuStrip的“Type Here”输入主菜单和菜单名字,热键用(&X)表示. 用快捷键选择主菜单,可以用Alt + 预定义的按键来实现,子菜单的选择只需要按定义的热键即可. 3.)双击File*菜单下面的子菜单,创建子菜单Open、Save、Exit的单击事件代码: private void OpenOToolStripMenuItem_Click(object sender, EventArgs e) { OpenFileDialog ofd = new OpenFileDialog { //初始化打开对话框的路径 InitialDirectory = @"D:\", Title = "Open File", //定义可显示的文件类型; Filter = "txt file(*.txt)|*.txt|All file(*.*)|*.*", //定义默认显示的文件类型为txt FilterIndex = 1, //对话框关闭后将复位初始化路径 RestoreDirectory = true }; if (ofd.ShowDialog == DialogResult.OK) { //根据打开对话框选择的文件名,加载文本内容到富文本框中. richtxtContent.Text = File.ReadAllText(ofd.FileName); } } private void SaveSToolStripMenuItem_Click(object sender, EventArgs e) { SaveFileDialog sfd = new SaveFileDialog { //初始化保存对话框的路径 InitialDirectory = @"D:\", Title = "Save File", //定义可显示的文件类型; Filter = "txt file(*.txt)|*.txt|All file(*.*)|*.*", //定义默认显示的文件类型为txt FilterIndex = 1, //对话框关闭后将复位初始化路径 RestoreDirectory = true }; if(sfd.ShowDialog == DialogResult.OK) { //保存文件 File.WriteAllText(sfd.FileName, richtxtContent.Text); //清空富文本框内容 richtxtContent.Clear; } } private void exitEToolStripMenuItem_Click(object sender, EventArgs e) { Application.Exit; } 4.)执行下程序,加载指定的txt文件到富文本框中,如下: 5.)在富文本框中更新加载进来的txt文件内容. 6.)Alt + F热键打开文件的下拉菜单,单击S保存富文本框中的内容到指定的文件.打开txt验证菜单单击事件保存文件成功. 二.实现winform主菜单的方法2:MenuStrip类和toolStripMenuItem类实例化对象,在主窗体加载事件中实现如下代码:
- Autopep8 安装时出现的两种报错 failed to create process 和 [Errno 2] No such file or directory
index.action 直接设置action,404和struts2中的解决方案- shell中的>,2>&1,&>file 解析记录
- Linux内核中的FILE文件数据结构和dup,dup2函数
- 剖析cmd >file 2>&1 和 cmd >file 2>file 的差别
- 软、硬件的相关配置和状态信息 访问: cmd - regedit 【好用的电脑应用软件】 1 2 清理软件 - 【CCl
- Shell 重定向 &>file,2>&1,1>&2 的区别
- 剖析cmd >file 2>&1 和 cmd >file 2>file 的差别