今日任务
代码:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <sys/wait.h>
/*
* function: 复制图片
* @param [ in]
* @param [out]
* @return
*/
int main(int argc, const char *argv[])
{
//打开文件
int fd=open("./DSCN7970.JPG",O_RDONLY);
if(fd==-1){
puts("fd open failed");
return -1;
}
int dest=open("./copy.JPG",O_WRONLY|O_CREAT|O_TRUNC,0664);
if(dest==-1){
puts("dest open failed");
return -1;
}
//创建子进程,父进程拷贝前一半,子进程拷贝后一半
int size=lseek(fd,0,SEEK_END);//获取总字节大小
printf("size=%d\n",size);
pid_t pid=fork();
char c;
//父进程
if(pid>0){
wait(NULL);
lseek(fd,0,SEEK_SET);
lseek(dest,0,SEEK_SET);
puts("parent process copy start");
for (int i=0; i<size/2; i++)
{
read(fd,&c,1);
write(dest,&c,1);
}
puts("parent process copy end");
}
else if(pid==0){
lseek(fd,size/2,SEEK_SET);
lseek(dest,size/2,SEEK_SET);
puts("son process copy start");
for (int i=size/2; i<size; i++)
{
read(fd,&c,1);
write(dest,&c,1);
}
puts("son process copy end");
}else{
perror("fork");
return -1;
}
puts("copy success");
//关闭文件
close(dest);
close(fd);
return 0;
}
今日思维文章来源:https://www.toymoban.com/news/detail-701530.html
文章来源地址https://www.toymoban.com/news/detail-701530.html
到了这里,关于IO和进程(进程)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!