#include
#include
#include
#includeint main()
{int fdr=open("file.txt",O_RDONLY);int fdw=open("newfile.txt",O_WRONLY|O_CREAT,0600);if(fdr==-1||fdw==-1){exit(0);}char buff[256]={0};int num=0;while((num=read(fdr,buff,255))>0){write(fdw,buff,num);}close(fdr);close(fdw);exit(0);
}
#include
#include
#include
#includeint main(int argc,char *argv[])
{if(argc!=3){printf("argc error\n");}char *file_name=argv[0];char *newfile_name=argv[1];int fdr=open(file_name,O_RDONLY);int fdw=open(newfile_name,O_WRONLY|O_CREAT,0600);if(fdr==-1||fdw==-1){exit(0);}char buff[256]={0};int num=0;while((num=read(fdr,buff,255))>0){write(fdw,buff,num);}close(fdr);close(fdw);exit(0);
}
运行程序
./test03 file.txt newfile.txt
inode节点:存放有关文件的属性信息;(唯一性)
#include
#include
#include
#include
#includeint main()
{int fd=open("file.txt",O_RDONLY);assert(fd!=-1);if(fd==-1){exit(0);}pid_t pid=fork();assert(pid!=-1);if(pid==0){char buff[128]={0};int n=read(fd,buff,1);printf("child %s\n",buff);sleep(1);n=read(fd,buff,1);printf("child %s\n",buff);}else{char buff[128]={0};int n=read(fd,buff,1);printf("parent %s\n",buff);sleep(1);n=read(fd,buff,1);printf("parent %s\n",buff);}close(fd);exit(0);
}
先创建一个文件file.txt,内容为abcdefg;
父进程打开文件以后,fork产生子进程,父子进程共享打开的文件,同时共享文件偏移
量;
(了解文件偏移量不共享)
打印结果是BAA;
操作系统精髓与设计原理第101页;
系统调用的执行过程:
系统调用是为了方便使用操作系统的接口,而库函数则是为了人们编程的方便;
库函数调用与系统无关,不同的系统,调用库函数,库函数会调用不同的底层函数实现,因
此可移植性好;