内容发布更新时间 : 2024/11/8 14:37:11星期一 下面是文章的全部内容请认真阅读。
{ while (*addr!=-1); *addr=i;
printf(\ }
exit(0); }
11. 编写程序利用消息队列通信机制实现两个进程之间的单项通信程序,一个进程发送从键盘接收的数据,另一个进程接收数据并显示。在程序运行期间调用“ipcs –q”查看消息队列的使用情况。 (要求: 把代码、程序编译和运行结果截图)
12. 文件硬链接(要求按照下面的步骤操作,把操作命令、操作流程和结果截图)
(1)创建一个文件a: (2)创建一个链接:
(3)创建文件a的一个复制版本:
(4)观察3个文件a, b, c的索引节点、权限、属主、大小、时间等属性: (5)修改文件a中的内容。
(6)使用cat命令分别观察文件b和文件c的内容。
(7)再次观察3个文件a, b, c的索引节点、权限、属主、大小、时间等属性: (8)删除文件a:
(9)观察文件b, c是否仍然存在: (10)查看文件b的内容: 13. 文件符号链接(软链接)
(1)创建一个文件a:
(2)创建文件a的一个符号链接: (3)创建文件a的一个复制版本:
(4)观察3个文件a, b, c的索引节点、权限、属主、大小、时间等属性: (5)修改文件a中的内容。
(6)使用cat命令分别观察文件b和文件c的内容。
(7)再次观察3个文件a, b, c的索引节点、权限、属主、大小、时间等属性: (8)删除文件a:
(9)观察文件b, c是否仍然存在:
(10)查看文件b的内容:
14. 写出分析程序执行结果,将_exit(0)换为exit(0),再写出程序执行结果,并分析运行结果差异的原因。
/*exit1.c*/
#include
#include
printf(\p=fork(); if (p>0)
printf(\else {
printf(\n”); printf(\ _exit(0); } } 15.
输出设备加锁程序:lockf2.c /* lockf2.c*/ #include
main( ) {
int p1,p2,i;
p1=fork( ); /*创建子进程p1*/ if (p1==0) {
lockf(1,1,0); /*加锁,这里第一个参数为stdout(标准输出设备的描述符)*/ for(i=0;i<5;i++) {
printf(\
sleep(2);
}
lockf(1,0,0); /*解锁*/ } else {
p2=fork(); /*创建子进程p2*/ if (p2==0) {
lockf(1,1,0); /*加锁,第一个参数为stdout(标准输出设备的描述符)*/ for(i=0;i<5;i++) {
printf(\sleep(2); }
lockf(1,0,0); /*解锁,第一个参数为stdout(标准输出设备的描述符)*/ } else {
lockf(1,1,0); /*加锁*/
for(i=0;i<5;i++) {
printf(\
sleep(2);
}
lockf(1,0,0);/*解锁*/
}
} }
程序说明:
按以下步骤分析上面的程序
? 将程序中所有的lockf()函数加上注释,再观察程序执行结果并估算程序执行所需的
时间。
? 分析程序两次执行的结果与时间的区别。