好文档 - 专业文书写作范文服务资料分享网站

操作系统实验报告

天下 分享 时间: 加入收藏 我要投稿 点赞

return 0; } int main() {

semctl(semid, 0, SETVAL, 1); semctl(semid, 1, SETVAL, NUM); semctl(semid, 2, SETVAL, 0); }

pid = fork(); if (pid == 0) } int i;

for (i = 0; i < 2; ++i)

{

pthread_join(p1,NULL); pthread_join(p2,NULL); {

ret=pthread_create(&p2,NULL,(void *)consumer,NULL);

int pid,ret; pthread_t p1,p2;

pid = fork(); if (pid == 0) {

int semid = semget(SEMKEY, 3, IPC_CREAT|0666);

int shmid = shmget(SHMKEY, sizeof(ShareBuf), IPC_CREAT|0777); char *shmaddr = shmat(shmid, NULL, 0); ShareBufInit((ShareBuf *)shmaddr);

ret=pthread_create(&p1,NULL,(void *)producer,NULL);

wait(NULL); }

semctl(semid, 0, IPC_RMID, 0); semctl(semid, 1, IPC_RMID, 0); semctl(semid, 2, IPC_RMID, 0);

shmdt(shmaddr);

shmctl(shmid, IPC_RMID, 0); return 0; }

4 实验四目录查询

4.1 实验目的

1)了解并掌握Linux线程及信号灯;

2)了解Linux线程与信号灯使用,包括:Linux线程,Linux信号灯,线程互斥,

线程同步。

4.2 实验要求

1)熟悉Linux文件系统的使用; 2)了解Linux文件系统目录结构;

3)编程实现目录查询命令,包括:功能类似ls –lR,查询指定目录下的文件及子

目录信息,显示文件的类型、大小、时间等信息,递归显示子目录中的文件信息。

4.3 设计思想

目录查询实验要求功能类似ls –lR,可以查询指定目录下的文件及子目录信息,显示文件的类型、大小、时间等信息,递归显示子目录中的文件信息。

首先用opendir打开指定目录,readdir读取目录的下一个目录项,再用lstat查询文件信息。利用队列方式显示目录,并忽略“.”、“、”、“..”与隐藏文件。

程序结构如下所是:

argv[1]或当前目录入目录队列; while (目录队列未空) {

取队首目录dirpath;

打开目录dirpath; 改变当前目录dirpath; while (dirent=dirpath中目录项) { }

关闭目录dirpath;

} 4.4 实验结果

运行结果如图5、图6所示:

取dirent的信息; if (dirent为目录文件) dirpath+ dirent入目录队列; else

显示dirent的长格式信息;

图5 运行结果

图6 运行结果

4.5 程序源代码 #include

#include #include #include #include #include #include #include

#define TRUE 1 #define FALSE 0

typedef int BOOL;

typedef struct {

typedef struct Node {

typedef struct {

BOOL InitQueue(LinkQueue *Q) {

Q->front = Q->rear = (QueuePtr)malloc(sizeof(QNode)); if (Q->front == NULL) {

QueuePtr front; QueuePtr rear; ElemType data; struct Node *next; char name[NAME_MAX+1]; } ElemType;

} QNode, *QueuePtr;

} LinkQueue;

操作系统实验报告

return0;}intmain(){semctl(semid,0,SETVAL,1);semctl(semid,1,SETVAL,NUM);semctl(semid,2,SETVAL,0);}pid=fork();if(pid==0)}inti;
推荐度:
点击下载文档文档为doc格式
18i3e5tf9k565jb3urou8mpoj7oc3w00zqt
领取福利

微信扫码领取福利

微信扫码分享