返回信息流1.APUE47页,即文件IO一开始说unix系统shell使用文件描述符0与进程的标准输入相关联,想问一下,这里的进程指shell本身还是其他进程,这句话该怎么理解。
2.以下这段程序,就是创建hello文件,然后将终端输入写到hello文件中。
但我把n = read(0, buf, BUFFSIZE)中的0改为1或者2时,执行程序,仍然是从终端输入。1代表标准输出,2代表标准错误输出,应该是不能输入才对呀。求大牛解释下。
#include "apue.h"
#include <fcntl.h>
#define BUFFSIZE 4096
int
main(void)
{
int n,fd;
char buf[BUFFSIZE];
if((fd = open("hello",O_RDWR|O_CREAT|O_TRUNC))<0){
printf("create error");
}
while ((n = read(0, buf, BUFFSIZE)) > 0)
if (write(fd, buf, n) != n)
printf("write error");
if (n < 0)
printf("read error");
exit(0);
}
这是一条镜像帖。来源:北邮人论坛 / cpp / #35216同步于 2010/1/18
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
请教个文件io的问题
chasez
2010/1/18镜像同步2 回复
订阅后,新回复会通过你的通知中心匿名送达。
2 条回复
【 在 chasez 的大作中提到: 】
: 1.APUE47页,即文件IO一开始说unix系统shell使用文件描述符0与进程的标准输入相关联,想问一下,这里的进程指shell本身还是其他进程,这句话该怎么理解。
:
: 2.以下这段程序,就是创建hello文件,然后将终端输入写到hello文件中。
: ...................
我这里正常,如果改成1,2,创建文件后直接就返回了