- 浏览: 1476604 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (691)
- linux (207)
- shell (33)
- java (42)
- 其他 (22)
- javascript (33)
- cloud (16)
- python (33)
- c (48)
- sql (12)
- 工具 (6)
- 缓存 (16)
- ubuntu (7)
- perl (3)
- lua (2)
- 超级有用 (2)
- 服务器 (2)
- mac (22)
- nginx (34)
- php (2)
- 内核 (2)
- gdb (13)
- ICTCLAS (2)
- mac android (0)
- unix (1)
- android (1)
- vim (1)
- epoll (1)
- ios (21)
- mysql (3)
- systemtap (1)
- 算法 (2)
- 汇编 (2)
- arm (3)
- 我的数据结构 (8)
- websocket (12)
- hadoop (5)
- thrift (2)
- hbase (1)
- graphviz (1)
- redis (1)
- raspberry (2)
- qemu (31)
- opencv (4)
- socket (1)
- opengl (1)
- ibeacons (1)
- emacs (6)
- openstack (24)
- docker (1)
- webrtc (11)
- angularjs (2)
- neutron (23)
- jslinux (18)
- 网络 (13)
- tap (9)
- tensorflow (8)
- nlu (4)
- asm.js (5)
- sip (3)
- xl2tp (5)
- conda (1)
- emscripten (6)
- ffmpeg (10)
- srt (1)
- wasm (5)
- bert (3)
- kaldi (4)
- 知识图谱 (1)
最新评论
-
wahahachuang8:
我喜欢代码简洁易读,服务稳定的推送服务,前段时间研究了一下go ...
websocket的helloworld -
q114687576:
http://www.blue-zero.com/WebSoc ...
websocket的helloworld -
zhaoyanzimm:
感谢您的分享,给我提供了很大的帮助,在使用过程中发现了一个问题 ...
nginx的helloworld模块的helloworld -
haoningabc:
leebyte 写道太NB了,期待早日用上Killinux!么 ...
qemu+emacs+gdb调试内核 -
leebyte:
太NB了,期待早日用上Killinux!
qemu+emacs+gdb调试内核
把stdout重定向到文件
两种方法:
第一种方法没有恢复
通过freopen把stdout重新打开到文件
输出结果
----------------------
第二种方法使用dup复制
先把 1 复制出来
然后建立个文件,用fileno取到文件描述符 覆盖到1
所有对1的操作都输出到文件了
用完之后,再把开始复制出来的 用dup2还给 1
输出结果
两种方法:
第一种方法没有恢复
通过freopen把stdout重新打开到文件
#include <stdio.h> FILE *stream; void main( void ) { stream = freopen( "freopen.out", "w", stdout ); // 重定向 if( stream == NULL ) fprintf( stdout, "error on freopen\n" ); else { //system( "type freopen.out" ); system( "ls -l" ); fprintf( stream, "This will go to the file 'freopen.out'\n" ); fprintf( stdout, "successfully reassigned\n" ); fclose( stream ); } fprintf( stdout, "this is not print out\n" );//这里没有输出 //system( "ls" );//没有会造成问题,需要小心 }
输出结果
----------------------
第二种方法使用dup复制
先把 1 复制出来
然后建立个文件,用fileno取到文件描述符 覆盖到1
所有对1的操作都输出到文件了
用完之后,再把开始复制出来的 用dup2还给 1
#include <stdio.h> #include <stdlib.h> #include <unistd.h> int main( ) { int old; FILE *new; old = dup( 1 ); // 取标准输出句柄 if( old == -1 ) { perror( "dup( 1 ) failure" ); exit( 1 ); } write( old, "This goes to stdout first\r\n", 27 ); if( ( new = fopen( "data", "w" ) ) == NULL ) { puts( "Can't open file 'data'\n" ); exit( 1 ); } if( -1 == dup2( fileno( new ), 1 ) )//把文件的描述符给到1,1就不代表stdout了 { perror( "Can't dup2 stdout" ); exit( 1 ); } system( "ls -l" ); puts( "This goes to file 'data'\r\n" ); fflush( stdout ); fclose( new ); dup2( old, 1 ); // 恢复 puts( "This goes to stdout\n" ); puts( "The file 'data' contains:" ); //system( "type data" ); system( "file data" ); }
输出结果
发表评论
-
weak_ptr解决循环引用问题
2021-03-08 21:12 1170C++11引入的三种智能指 ... -
gcc链接顺序
2019-10-12 18:25 630代码在 https://github.com/killinux ... -
xl2tp 备份
2019-09-24 16:25 6892019年9月24日更新: 注意,需要开启firewall ... -
c++11的function和bind
2019-09-10 16:12 532参考:https://www.cnblogs.co ... -
sdl笔记
2019-01-31 17:19 732sdl教程教程 https://github.com/Twin ... -
tinyemu
2019-01-24 17:59 1432参考https://bellard.org/jslinux/t ... -
aws搭建xl2tp给iphone使用
2018-12-26 21:37 18902019年12月26日 可以参考原来的配置 https:// ... -
consul的基本使用
2017-06-27 11:13 1399### 安装 [centos7上consul的安装](ht ... -
lvs的helloworld
2017-06-13 20:36 596###################lvs######### ... -
系统调用的helloworld
2017-05-04 16:14 632《2.6内核标准教程》 p293 #include < ... -
bitcoin和cgminer的安装
2017-04-05 22:45 1958参考 http://blog.csdn.net/rion_ch ... -
ceph安装和常用命令
2017-03-21 21:55 953/etc/hosts ssh-keygen ssh-copy- ... -
mobile terminal 笔记
2016-12-02 15:35 624找出旧的iphone4 越狱之后可以变个小操作系统 mobi ... -
socket基础和select(python)
2016-06-14 17:21 1799上接 c语言的socket基础ht ... -
socket基础(c语言)
2016-06-14 16:45 994不使用select 普通的基础socket连接,对多个客户端的 ... -
ffmpeg+nginx 的直播(2,直播摄像头和麦克风)
2016-05-28 20:21 4357假设我的服务器是centos7 192.168.139.117 ... -
ffmpeg+nginx 的直播(1,直播播放的视频文件)
2016-05-26 17:11 659164位操作系统centos7 ############ 1.一 ... -
socat和netcat(nc)
2016-04-29 22:36 1742转 原文链接: http://www.wenquan.name ... -
neutron基础九(qemu nat网络)
2016-02-06 17:21 1621接上基础八,kvm透传nested忽略 1.在主机ce ... -
neutron基础八(qemu 桥接网络)
2016-02-06 13:13 1542qemu的桥接和nat的qemu启动命令是一样的,但是后续的脚 ...
相关推荐
有时我们需要重定向stdout,stderr,stdin。比如:将输出写入文件,又或者我们要将命令行程序输出结果显示到Windows对话框中。源码示范如何在Windows中实现,封装了几个简单易用的函数。
`>`用于重定向STDOUT到文件,`2>`用于重定向STDERR,`&>`则同时重定向STDOUT和STDERR。如果文件已存在,`>`会覆盖文件内容,而`>>`则追加到文件末尾。 5. 管道(|):管道符号允许我们将一个命令的STDOUT作为另一个...
在Unix/Linux系统中,可以使用以下几种方式来重定向STDOUT: 1. **>`file`**: 这将STDOUT重定向到`file`,如果`file`已存在,其内容会被清空;若不存在,会创建新文件。 2. **>>$file**:这将STDOUT追加到`file`,...
然而,有时候我们需要将输出重定向到文件、另一个程序,甚至内存中,以便于调试、日志记录或集成到其他系统。通常,这可以通过调用`freopen()`函数来实现,但是这种方法可能受到一些限制,比如在某些情况下可能会...
一种静态编译工具,用于生成可执行文件,将其标准输出和标准错误重定向到 syslog。 静态编译很重要,至少在预期的 Helios/Docker 用例中,因为我们不想对容器的内容以及 libc 的可用性或位置做出任何假设。 具体来...
python 打印信息重定向 GUI界面 ,PyQt5实时显示调用外部程序的实时输出显示,subprocess.Popen stdout输出重定向,备注详细!
同时重定向标准输出和标准错误输出到同一个文件。 #### 知识点三:通过`system()`函数实现重定向 在C语言中,可以使用`system()`函数执行shell命令,从而实现重定向。例如: ```c #include int main() { system...
通过使用各种重定向操作符,可以将命令的输入输出重定向到不同的文件、设备或其他目标,从而实现灵活的命令执行和数据处理。 BASH重定向命令执行脚本的基本语法规则是: 1. 语法分析结果为变量分配和重定向的words...
8. 文件描述符可以用于执行更复杂的重定向操作,比如使用"n>&-"来关闭文件描述符n,使用"n来关闭输入文件描述符n,以及使用"n>&m"来将文件描述符n的内容重定向到文件描述符m。 9. 在shell脚本中,命令组和子shell...
1. `>`:用于覆盖文件内容,将stdout重定向到指定文件。 2. `>>`:追加模式,将stdout的内容追加到指定文件,不会覆盖原有内容。 3. `将指定文件内容作为stdin传递给命令。 4. `2>`:将stderr重定向到指定文件,可以...
操作系统一般提供了基于文件的输入输出重定向功能,例如,可以将输入数据重定向到文件,将程序的输出重定向到另一个文件,以便于自动化评测。 Python程序在自动评测中,常常会用到操作系统提供的基于文件的输入输出...
4. **合并输出**:`&>`或`>&`操作符可以同时重定向stdout和stderr到同一个文件。例如,`command &> combined_output.txt`会将命令的所有输出,包括正常输出和错误,都写入combined_output.txt。 5. **管道符**:`|`...
- **输出重定向**:例如,使用`>`操作符可以将命令的输出重定向到文件中,覆盖原有文件内容。 ```bash $ ls > ls.out ``` - **追加重定向**:使用`>>`操作符可以在不删除原有文件内容的情况下追加输出。 ```bash...
- `cmd > file`:将标准输出重定向到文件`file`中。 - `cmd >> file`:将标准输出追加到文件`file`中。 - `cmd 2>&1`:将标准错误输出重定向到与标准输出相同的位置。 - **输入重定向**: - `cmd 将文件`file`...
例如,使用`>`和`>>`符号进行输出重定向,将命令的输出保存到指定文件,`>`覆盖文件原有内容,`>>`则追加到文件末尾。 3. **重定向**:除了输入输出重定向,还提到了管道(Pipeline)的使用,管道允许将一个命令的...
在Linux系统中,重定向允许用户将命令的输出从默认位置(屏幕)重定向到文件中,或者将文件作为命令输入的来源,从而实现对输入输出流的精确控制。 1. 标准输入(stdin),标准输出(stdout)和标准错误(stderr) ...
- `&>`:将所有输出(包括标准输出和标准错误)重定向到一个文件。 这些操作可以通过以下格式实现: ```bash command [output redirection] ``` 其中,`command` 是需要执行的命令,`[output redirection]` 是...
在学习易语言重定向输入输出时,建议先从简单的示例开始,如将输出重定向到文件,然后再尝试更复杂的操作,如从文件读取数据并进行处理。同时,配合阅读“易语言入门教程”中的相关内容,可以更好地理解和掌握这些...
例如,要将输出重定向到一个自定义的文件对象,可以使用`sys.stdout`的替换功能: ```python import sys # 创建伪装的文件对象 fake_file = StringIO() # 重定向输出 sys.stdout = fake_file # 写入内容 print(...