做网站获取ip,大庆工程建设公司网站,定制制作网站设计,常州网页定制一、文件重定向
矩阵的下标#xff0c;也就是文件描述符的分配规则#xff0c;是从0开始空的最小的文件描述符分配给进程新打开的文件#xff1b;文件输出重定向的原理是#xff0c;关掉1#xff08;输出#xff09;#xff0c;然后打开文件#xff0c;这个新打开的文…一、文件重定向
矩阵的下标也就是文件描述符的分配规则是从0开始空的最小的文件描述符分配给进程新打开的文件文件输出重定向的原理是关掉1输出然后打开文件这个新打开的文件的文件描述符就会是“1”这样顺理成章原本应该输出到屏幕的内容就被输入到文件中了文件输入重定向“”的原理类似就是关掉0键盘输入,然后将文件的file*放入到文件描述符0的位置这样顺理成章原本应该从键盘中读的内容就从文件中读取了操作系统有系统调用可以直接实现上述原理dup2() #include unistd.h int dup2(int oldfd, int newfd); —— duplicate a file descriptor, makes newfd to be the copy of oldfd, closing newfd first if necessary; 重定向的工作实际上是在程序替换之前进行了文件的打开和文件描述符中内容的替换文件打开涉及的task_struct(PCB)中struct files_struct *filesstruct files_struc(包含文件指针数据的结构体)t 都不会程序替换改变程序替换只会改变虚拟地址空间mm_struct,页表和内存中的代码和数据stdout和stderr在本质上没有任何区别但是分成两种输出可以有效区分正常输出和报错方便筛选信息错误输出也可以被重定向之前写的“ls log.txt”是一种缺省写法全的写法为“./mycode 1log.txt 2err.txt”这样就把stdout和stderr分别重定向到不同的文件中了如果不想区分stdout和stderr可以使用“./mycode.c 1all.txt 21”一切皆文件虚拟文件系统VFS由所有的struct files组成task_struct(PCB)包含struct files_struct *files——struct files_struct(包含文件指针数据的结构体)——struct file(包含文件在内存中的存储地址的指针)包含const struct file_operations *——struct file_operations——struct device(外设结构体)
二、缓冲区