IO接口 线程
2023-12-13 19:58:35
请使用文件I0函数拷贝- -张图片(图片就是普通文件,普通文件怎么拷贝,图片就怎么拷贝)
要求子进程拷贝后半部分,父进程拷贝前半部分。
ps:是否拷贝成功打开可以打开图形化界面查看,或者使用diff指令--》 diff 1.png 2.png
eog 1.png
代码
#include <stdio.h>
#include <func.h>
int main(int argc, const char *argv[])
{
int ld = open("./1.png", O_RDONLY);
if(ld < 0)
{
perror("open");
return -1;
}
int fd = open("./111.png", O_WRONLY|O_CREAT|O_TRUNC);
if(fd < 0)
{
perror("open");
return -1;
}
off_t offsize = lseek(ld, 0, SEEK_END)/2; //1/2文件大小
ssize_t set = 0;
char a;
int i = 0;
pid_t pid = fork(); //创建子
if(pid > 0)
{
//打开需要写的文件 拷贝前一半
lseek(ld,0, SEEK_SET);
while(1)
{
set = read(ld, &a,sizeof(a));
// printf("%ld\n", set);
write(fd, &a, set);
i++;
if( offsize <= i)
{
break;
}
}
}
//子 拷贝后面一半
else if(pid == 0)
{
sleep(5);
lseek(ld,offsize, SEEK_SET);
while(1)
{
set = read(ld, &a,sizeof(a));
if(set == 0)
{
break;
}
write(fd, &a, set);
}
}
else if(pid < 0)
{
perror("fork");
return -1;
}
return 0;
}
现象
孤儿进程?
僵尸进程?
?
?
文章来源:https://blog.csdn.net/weixin_64965464/article/details/134979286
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!