1
#include <stdio.h>
#include "unistd.h"
#include "sys/types.h"
#include "sys/wait.h"
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
int main(int argc, const char *argv[])
{
int srcfd=open("./text",O_RDONLY);
if(srcfd==-1)
{
perror("srcfd");
return -1;
}
int desfd=open("./1text",O_WRONLY|O_CREAT|O_TRUNC);
if(desfd==-1)
{
perror("desfd");
return -1;
}
int size=lseek(srcfd,0,SEEK_END);
char buf[128];
int pid1=fork();
if(pid1>0)
{
printf("parent\n");
int pid2=fork();
if(pid2>0)
{
printf("parent_1c\n");
wait(NULL);
wait(NULL);
}
else if(pid2==0)
{
lseek(srcfd,0,SEEK_SET);
lseek(desfd,0,SEEK_SET);
int i;
for(i=0;i<size/2;i++)
{
int res=read(srcfd,buf,sizeof(buf));
write(desfd,buf,res);
}
wait(NULL);
printf("parent_2c\n");
}
else
{
perror("fork");
return -1;
}
}
else if(pid1==0)
{
int j;
for(j=size/2;j<=size;j++)
{
int res=read(srcfd,buf,sizeof(buf));
write(desfd,buf,res);
}
printf("child\n");
wait(NULL);
}
else
{
perror("fork");
return -1;
}
return 0;
}
2文件IO,标准IO区别;
标准IO=文件IO+缓冲区;
标准IO封装了IO函数,效率更高;
标准IO是对文件指针操作,文件IO是对文件描述符操作;
3 什么是文件描述符;
是使用open函数打开得到的整数,
描述符个数有上限默认为1024;
进程启动后默认启动0,1,2三个描述符;
文件描述符规则是最小未分配原则;
4进程;
进程是资源分配的最小单位;每个进程会分配4g虚拟内存;
进程的用户空间独立,但内核空间共享;
进程的调度原则时间片轮询,上下文切换;
进程分三类交互进程,批处理进程,守护进程;
进程由进程控制段,数据段,程序段组成