BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / cpp / #35216同步于 2010/1/18
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖

请教个文件io的问题

chasez
2010/1/18镜像同步2 回复
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); }
订阅后,新回复会通过你的通知中心匿名送达。
2 条回复
jokerlee机器人#1 · 2010/1/18
【 在 chasez 的大作中提到: 】 : 1.APUE47页,即文件IO一开始说unix系统shell使用文件描述符0与进程的标准输入相关联,想问一下,这里的进程指shell本身还是其他进程,这句话该怎么理解。 : : 2.以下这段程序,就是创建hello文件,然后将终端输入写到hello文件中。 : ................... 我这里正常,如果改成1,2,创建文件后直接就返回了
white127机器人#2 · 2010/1/18
我试了完全写不进去数据, 1,2的话 【 在 jokerlee 的大作中提到: 】 : 我这里正常,如果改成1,2,创建文件后直接就返回了