Linux进程通信实验(共享内存通信,接上篇)

Linux进程通信实验(共享内存通信,接上篇),第1张

这一篇记录一下共享内存实验,需要linux的共享内存机制有一定的了解,同时也需要了解POSIX信号量来实现进程间的同步。可以参考以下两篇博客: https://blog.csdn.net/sicofield/article/details/10897091

https://blog.csdn.net/ljianhui/article/details/10253345

实验要求:编写sender和receiver程序,sender创建一个共享内存并等待用户输入,然后把输入通过共享内存发送给receiver并等待,receiver收到后把消息显示在屏幕上并用同样方式向sender发送一个over,然后两个程序结束运行。

这个实验的难点主要在于共享内存的创建和撤销(涉及到的步骤比较多,需要理解各步骤的功能),以及实现两个进程间的相互等待(使用信号量来实现,这里使用了有名信号量)

实验心得:学习理解了linux的共享内存机制以及POSIX信号量机制。

两个实验虽然加强了对linux一些机制的理解,但是感觉对linux的学习还不够,需要继续学习。

1-

for dir in "a_sub b_sub"

do

cd $dir

ls -1 *.c

ls -1 *.o

cd ..

done

2-

str=`df /home |grep home|cut -c 51-`

for used in $str

do

per_use=$used

break

done

num=`echo $per_use|cut -d'%' -f1`

if [ $num -lt 50 ]

then

echo "用户文件系统磁盘使用负荷量小"

else

if [ $num -lt 90 ]

then

echo "用户文件系统磁盘使用负荷量正常"

else

echo "用户文件系统磁盘使用负荷量偏大"

fi

fi

3-假设文件内容如下:

class 1

100

98

80

class 2

99

96

90

class 3

100

60

50

cnt=0

sum=0

while read a

do

if echo $a|grep class >/dev/null

then

if [ $cnt -ne 0 ]

then

avg=`expr $sum / $cnt`

echo "$old_class's average: $avg"

fi

cnt=0

sum=0

old_class=$a

else

cnt=`expr $cnt + 1`

sum=`expr $sum + $a`

fi

done <score.txt

if [ $cnt -ne 0 ]

then

avg=`expr $sum / $cnt`

echo "$old_class's average: $avg"

fi


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/7345867.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-04
下一篇 2023-04-04

发表评论

登录后才能评论

评论列表(0条)

保存