I/O 作业4

使用文件IO 实现父进程向子进程发送信息,并总结中间可能出现的各种问题

运行结果:

出现问题:

1、由于无法控制子进程和父进程的时间片抢夺,所以导致读写混乱;

2、采用sleep来控制两者运行状态的话,会导致只能在代码设置的休眠时间段内进行输入消息,因此输入输出会有时间限制,两个进程都只能等待休眠期的结束在开始执行,操作大大受限;

3、以当前所学内容只能勉强实现效果,而无法对代码进行优,从而化达到要求的效果;

代码:

#include <allhead.h>


void My_write()
{
	int dp=open("./mass.txt",O_WRONLY | O_CREAT | O_TRUNC,0664);
    if(dp == -1)
	{
		perror("open:");
		return ;
	}
	char buf[40]="0";
	printf("父进程发送消息:");
	gets(buf);
	int res = write(dp,buf,strlen(buf));
	if(res == -1)
	{
		perror("write:");
		return ;
	}
	close(dp);
}

void My_read()
{
	int dp2=open("./mass.txt",O_RDONLY);
    if(dp2==-1)
	{
		perror("read:");
		return ;
	}
	char buf1[40]="0";
	int res1 = read(dp2,buf1,40);
	if(res1==-1)
	{
        perror("read:");
		return ;
	}
    printf("子进程收到消息:");
	printf("%s\n",buf1);

	close(dp2);

}
int main(int argc, const char *argv[])
{
	int res2 = fork();

	if(res2>0)
	{
		My_write();
		sleep(5);
	}
	else if(res2==0)
	{
		sleep(5);
		My_read();
	}
	else
	{
		perror("fork:");
		return 1;
	}

    wait(NULL);
	return 0;
}

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值