linux下的read函数出错了

fupeng1114 2011-05-28 12:03:48

#include<unistd.h>
#include<signal.h>
#include<stdio.h>
int pid1,pid2;
int i;
int s=0;
int *p,*q;
main(){
int fd1[2],fd2[2],fd3[2];
int outpipe[50],inpipe[50];
pipe(fd1);
pipe(fd2);
pipe(fd3);
while((pid1=fork())==-1);
if(pid1==0){
p=inpipe;
for(i=0;i<50;i++){
read(fd1[0],p,sizeof(int));
s=s+*p;
p++;
}
printf("%d\n",s);
inpipe[0]=s;
lockf(fd3[1],1,0);
write(fd3[1],inpipe,sizeof(int));
lockf(fd3[1],0,0);

}
else{
s=0;
while((pid2=fork())==-1);
if(pid2==0){
p=inpipe;
for(i=0;i<50;i++){
read(fd2[0],p,sizeof(int));
s=s+*p;
p++;
}
inpipe[0]=s;
lockf(fd3[1],1,0);
write(fd3[1],inpipe,sizeof(int));
lockf(fd3[1],0,0);


}
else{
for(i=0;i<50;i++)
outpipe[i]=(i+1)*2;
p=outpipe;
lockf(fd1[1],1,0);
for(i=0;i<50;i++){
write(fd1[1],p,sizeof(int));
p++;
}
lockf(fd1[1],0,0);
for(i=0;i<50;i++)
outpipe[i]=i*2+1;
p=outpipe;
lockf(fd2[1],1,0);
for(i=0;i<50;i++){
write(fd2[1],p,sizeof(int));
p++;
}
lockf(fd2[1],0,0);

wait(0);
s=0;
read(fd3[0],p,sizeof(int));
s=s+*p;
printf(" %d\n",*p);
wait(0);
read(fd3[0],p,sizeof(int));
printf(" %d\n",*p);
s=s+*q;
}
}
}







两个*p的值出错了,为什么啊??难道read函数赋值出错了,还是指针类型用错了???????
...全文
175 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
fupeng1114 2011-05-28
  • 打赏
  • 举报
回复


上面的图片如上
justkk 2011-05-28
  • 打赏
  • 举报
回复
s=s+*q;
这一句就有问题,q 都没有初始化
fupeng1114 2011-05-28
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 bhdgx 的回复:]
你的错误是指两次输出的值不一样,还是输出和输入不一致,如果是第一种情况那就是正常的了
[/Quote]
这个程序是计算1加到100的,但是最后结果出错了
laoyang103 2011-05-28
  • 打赏
  • 举报
回复
不懂Linux
Soulic 2011-05-28
  • 打赏
  • 举报
回复
你的错误是指两次输出的值不一样,还是输出和输入不一致,如果是第一种情况那就是正常的了
fupeng1114 2011-05-28
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 justkk 的回复:]
s=s+*q;
这一句就有问题,q 都没有初始化
[/Quote]

不好意思,那个q写错了,应该是p
Re: 《Linux 系统常用内置命令》  ---------------------------------------内容提要:     01. Linux内置命令概述;两栖命令 echo pwd kill 等等    02. 判断内置命令的方式;help -d [command] 能够正常回显    03. 内置命令在 shell 脚本中的基础应用介绍    04. 内置命令 alias 和 unalias 自定义别名和删除别名;临时生效与永久生效    05. 后台前台 出将入相 腾腾转 任务相关命令 bg fg jobs    06. SHELL 循环的处理方式 break continue exit    07. 常见 builtin 内置命令 eval exit export history    08. 内置命令 read 交互式赋值变量;type 判断命令类型    09. 内置命令 ulimit 修改系统资源使用限制;unset 清空变量  本人在教学和实战过程中发现,即便是有一定运维经验的人,可能已经能够搭建一定复杂度的Linux架构,但是在来来回回的具体操作中,还是体现出CLI(命令界面)功底不够扎实,甚至操作的非常‘拙’、处处露‘怯’。 对一个士兵来说,枪就是他的武器,对于一个程序员来说,各种library(工具库)就是他的武器;而对于Linux运维人员来说,无疑命令行工具CLI(命令界面)就是他们的武器;高手和小白之间的差距往往就体现在对于这些“武器”的掌握和熟练程度上。有时候一个参数就能够解决的事情,小白们可能要写一个复杂的Shell脚本才能搞定,这就是对CLI(命令界面)没有理解参悟透彻导致。 研磨每一个命令就是擦拭手中的作战武器,平时不保养不理解,等到作战的时候,一定不能够将手中的武器发挥到最好,所以我们要平心、静气和专注,甘坐冷板凳一段时间,才能练就一身非凡的内功! 本教程从实战出发,结合当下流行或最新的Linux(v6/7/8 版本)同时演示,将命令行结合到解决企业实战问题中来,体现出教学注重实战的务实精神,希望从事或未来从事运维的同学,能够认真仔细的学完Linux核心命令的整套课程。 本课程系列将逐步推出,看看我教学的进度和您学习的步伐,孰占鳌头! 注:关于教学环境搭建,可以参考本人其它课程系列,本教学中就不再赘述!  《参透 VMware 桌面级虚拟化》 《在虚拟机中安装模版机(包括应用软件等)》 《SecureCRT 连接 GNS3/Linux 的安全精密工具》
 本套课程为Python基础篇的第4套课程,主要讲解python文件处理的系统知识体系。       首先讲解Python文件的概念以及常用读写函数open()、Read()、write()、close()以及文件读写访问标志。 其次讲解文件的典型应用文件的复制算法,以及with as 关键字简化资源关闭。本课程末尾讲解文件与目录的创建、删除、重命名、文件与目录的绝对路径与相对路径技术等。       课程末尾需要重点说明的是,本系列课程均设置课堂练习与课后作业集中讲解(录播形式),让初学者通过大量练习与阶段项目等手段有效强化学习效果,保证学习过程中的技能全面提升!教学特点:      使用大量(3D/2D)动画与图示方式,由浅入深讲解Python编程。配之海量课堂练习/课后作业的大量讲解,以及刘老师风趣幽默的课堂幽默感染力,让你轻松加愉悦的心情下开启Python系统学习之旅,系统与深入掌握当今最为火热的人工智能御用编程语言!      本Python教程分为入门、基础、中级、进阶篇,共15套教程组成。突出教学特点如下:      1:为弥补线下“互动性”与知识点的高“吸收率”,每套课程均设置“课堂练习”、“课后作业”、“阶段项目实战”、以及每个章节末尾的“课程笔记”整理环节,不断强化学员知识点的不断巩固与知识体系的梳理,不遗漏任何重要知识点。 以上四大自学环节设置,保证自学过程中知识的反复锤炼与全面吸收,最终获得优秀学习效果!      2:本Python系列课程(15套)从入门篇开始,完全从真正零基础开始讲起,特别适合中小学生以及大学非计算机专业的初学者开始入门!      3:大量采用3D/2D图形化示例讲解,对于Python抽象与复杂问题全部采用3D动画演示。      4:每套课程开始均设置“课程概述”: 讲解本套课程的前导课程、后续课程,以及本套课程的知识体系内容,帮助学习者更好的掌握课程的来龙去脉。             更多学习内容以图示方式供广大学员参考如下:
课程简介: 课程总计41课时,从什么是事务讲起,直到分布式事务解决方案,很的0基础基础与提升系列课程。对于难以理解的知识点,全部用画图+实战的方式讲解。 第一部分:彻底明白事务的四个特性:原子性、一致性、隔离性、持久性,用场景和事例来讲解。 第二部分:实战讲数据库事务的6中并发异常:回滚丢失、覆盖丢失、脏读、幻读、不可重复读、MVCC精讲。 第三部分:彻底搞清楚4种事务隔离级别:READ_UNCOMMITTED 读未提交隔离级别、READ_COMMITTED 读已提交隔离级别、REPEATABLE_READ 可重复度隔离级别、SERIALIZABLE 序列化隔离级别 第四部分:彻底搞清楚MySQL的各种锁:行锁、表锁、共享锁、排它锁、Next-Key锁、间隙锁、X锁、S锁、IS锁、IX锁、死锁、索引与锁、意向锁等。 第五部分:彻底搞清楚Spring事务的7种传播级别的原理和使用:PROPAGATION_REQUIRED、PROPAGATION_SUPPORTS、PROPAGATION_MANDATORY、PROPAGATION_REQUIRES_NEW、PROPAGATION_NOT_SUPPORTED、PROPAGATION_NEVER、PROPAGATION_NESTED分布式事务的理论基础:RPC定理、BASE理论、XA协议都是什么,原理是什么,有什么关联关系 第六部分:分布式事务的5种解决方案原理和优缺点:2PC两阶段提交法、3PC三阶段提交法、TCC事务补偿、异步确保策略、最大努力通知策略 第七部分:阿里巴巴分布式事务框架Seata:历经多年双十一,微服务分布式事务框架,用一个Nacos+Spring Cloud+Seta+MySql的微服务项目,实战讲解阿里的分布式事务技术,深入理解和学习Seata的AT模式、TCC模式、SAGA模式。 课程资料: 课程附带配套2个项目源码72页高清PDF课件一份阿里巴巴seata-1.1.0源码一份阿里巴巴seata-server安装包一份

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧