IO day4

1.若没有子进程wait函数是否阻塞,wait函数是否运行成功.

代码:

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <head.h>
int main(int argc, const char *argv[])
{
	int a = 9;
	printf("%d",a);

	wait(NULL);
	return 0;
}

运行结果:

无堵塞

2.用文件IO函数拷贝一张图片,要求子进程拷贝后半部分,父进程拷贝前半部分。

代码:

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <head.h>
int main(int argc, const char *argv[])
{
	int a = open("tu1.jpg",O_RDONLY);
	if( a < 0)
	{
		perror("open");
		return -1;
	}
	else
		printf("open a success %d \n",__LINE__);
	
	
	int b = open("tu2.jpg",O_RDWR | O_CREAT | O_TRUNC,0777);
	if( b < 0)
	{
		perror("open");
		return -1;
	}
	else
		printf("open b success %d \n",__LINE__);

	off_t size = lseek(a,0,SEEK_END);
	printf("%ld\n",size);
	printf("%ld\n",size/2);	
	char i;
	pid_t cpid = fork();


	if(cpid > 0 )
	{
		off_t size_2 = lseek(a,0,SEEK_SET);
		int read_f = 0;
		char arr[size/2];
		bzero(arr,sizeof(arr));
		read_f = read(a,arr,sizeof(arr));
		write(b,arr,read_f);
	}


	else if(cpid == 0)
	{
		off_t size_1 =  lseek(a,(size/2),SEEK_SET);
		int read_s = 0;
		while(1)
		{
			read_s = read(a,&i,1);
			if(read_s == 0 )
				break;
			write(b,&i,1);
		}
	}

	if(close(a) < 0)
	{
		perror("close");
		return -1;
	}
	else
		printf("close a success %d \n",__LINE__);	
	
	if(close(b) < 0)
	{
		perror("close");
		return -1;
	}
	else
		printf("close b success %d \n",__LINE__);

	return 0;
}

运行结果:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值