由open返回的文件描述符一定是该进程尚未使用的最小描述符.由于程序启动时自动打开文件描述符0.1.2,因此第一次调用open打开文件通常会返回描述符3,再调用open就会返回4.可以利用这一点在标准输入.标准输出或标准错误输出上打开一个新文件,实现重定向的功能.例如,首先调用close关闭文件描述符1,然后调用open打开一个常规文件,则一定会返回文件描述符1,这时候标准输出就不再是终端,而是一个常规文件了,再调用printf就不会打印到屏幕上,而是写到这个文件中了.后面要讲的dup2函数提供…
Unix中一切皆文件,磁盘等设备在操作系统来看都是文件. 对文件进行操作时,需要打开这个文件,并获得文件描述符(file descriptor, fd) 而每个进程生来就有三个文件描述符绑定在它身上,分别指向标准输入,标准输出和标准错误. 鼠标键盘——标准输入设备,标准输入文件,指针stdin: 显示器——标准输出设备,标准输出文件,指针stdout: 一切皆文件,设备也是文件: stdout.stdin.stderr是指针,指向文件的指针. 如果要更改指向的文件,例如不输出到显示器上,而是输出…
stdin,stdout,stderr stdin=0 stdout=1 stderr=2 使用tee来传递内容,把stdout 作为stdin 传到下个命令 root@172-18-21-195:/tmp/pratice# echo "who is this" | tee - # -相当于传入到stdout,所以打印2次 who is this who is this root@172-18-21-195:/tmp/pratice# echo "who is this&qu…
Abstract: 1) Linux Shell 命令的标准输入.标准输出.标准错误,及其重定位: 2)Linux Shell 操作自定义文件描述符: 文件描述符是与文件相关联的一些整数,他们保持与已打开文件的关联.众所周知的文件描述符是标准输入stdin.标准输出stdout.标准错误stderr,我们可以重定位这些文件描述符关联文件的内容到另外一个文件文件描述符. 1. Linux Shell 命令的标准输入.标准输出.标准错误 当我们在编写 shell 脚本时,我们会非常频繁地操作执行命令…
WorkerMan中work.php中 resetStd 方法中代码如下 public static function resetStd() { if (!static::$daemonize || static::$_OS !== 'linux') { return; } global $STDOUT, $STDERR; $handle = fopen(static::$stdoutFile, "a"); if ($handle) { unset($handle); //关闭标准输出…
Fd #include <stdio.h> Fd extern FILE *stdin; Fd extern FILE *stdout; Fd extern FILE *stderr; DESCRIPTION 描述 通常,每个 Unix 程序在启动时都会打开三个流,一个用于输入,一个用于输出,一个用于打印诊断或错误消息.典型的,他们被连接到用户的终端 (参见 tty(4)) 但是也有可能指向文件或是其他设备,取决于父进程选择设置了什么 (参见 sh(1) 的重定向 (``Redirection…
在Linux下,当一个用户进程被创建的时候,系统会自动为该进程创建三个数据 流,也就是题目中所提到的这三个.那么什么是数据流呢(stream)? 我们知道,一个程序要运行,需要有输入.输出,如果出错,还要能表现出自身的错误.这是就要从某个地方读入数据.将数据输出到某个地方,这就够成了数据流. 执行一个shell命令行时通常会自动打开三个标准文件,即标准输入文件(stdin),通常对应终端的键盘:标准输出文件(stdout)和标准错误输出文件(stderr),这两个文件都对应终端的屏幕.进程将从标…
FROM : http://www.cnblogs.com/thinksasa/archive/2013/02/27/2935158.html PHP CLI(command line interface)中,有三个系统常量,分别是STDIN.STDOUT.STDERR,代表文件句柄. 应用一: <?php while($line = fopen('php://stdin','r')){ echo fgets($line); } ?> 应用二: <?php echo STDIN; ?&g…
详细见: http://my.oschina.net/qihh/blog/55308 stdin是标准输入文件,stdout是标准输出文件,stderr标准出错文件. 程序按如下方式使用这些文件: 标准输入是程序可以读取其输入的位置.缺省情况下,进程从键盘读取 stdin . 标准输出是程序写入其输出的位置.缺省情况下,进程将 stdout 写到终端屏幕上. 标准错误是程序写入其错误消息的位置.缺省情况下,进程将 stderr 写到终端屏幕上.…
PHP CLI(command line interface)中,有三个系统常量,分别是STDIN.STDOUT.STDERR,代表文件句柄. 应用一: <?php while($line = fopen('php://stdin','r')){ echo fgets($line); } ?> 应用二: <?php echo STDIN; ?> 在dos命令行下直接返回STDIN文件指针(文件句柄).如图: 应用三: <?php echo fgets(STDIN); ?>…