Linux实验报告四

Linux实验报告四

实 验 报 告

教 学 院 计算机

课程名称 Linux操作系统

专 业 计算机应用

班 级 13应用

姓 名 黄跃然

指导教师 李辉燕

2014 年 09 月 31 日

1

Linux实验报告四

Linux实验报告四

实验四 VI的基本操作

实验课程名:LINUX操作系统

专业班级: 13应用 学号: 201330410123

实验时间:

姓名: 黄跃然 实验地点: K4--406 指导教师: 李辉燕

Linux实验报告四

2

3

Linux实验报告四

4

Linux实验报告四

5

Linux实验报告四

 

第二篇:linux实验报告4

福建农林大学计算机与信息学院实验报告

系:    信息与机电工程系  专业:      计算机科学与技术        年级:   2011        

姓名:     学号:   116708067   实验室号_ 实验1#607  计算机号  J607S075         

实验时间:  2014.6.16        指导教师签字:                    成绩:         

报告退发 (订正 、 重做)                    

实验名称:Linux程序开发

一、实验目的和要求

1)        掌握程序参数的概念及使用

2)        掌握文件的锁定

二、实验内容和原理

1)        编写程序能处理命令行不同的参数选项,当选项是i、j、l、r时,打印这是正确的选项;f选项时需要一个文件名;而其他的选项为错误的选项。例如在命令行输入:./args   -i    -lr  hello  -f  -q   fred.c 

则要能识别出i、l、r、f是正确的选项,而且f选项还需要参数;而q是错误的选项;hello和fred.c是非选项参数。

2)        编写程序实现如下功能:打开test文件,设置该文件的第10~30字节为共享锁,第40~50字节为独占锁。

三、实验环境

硬件:计算机

软件:Windows系列操作系统环境下的Linux + VM(虚拟机软件)。

四、算法描述及实验步骤

1. 编写程序能处理命令行不同的参数选项,当选项是i、j、l、r时,打印这是正确的选项;f选项时需要一个文件名;而其他的选项为错误的选项

#include <stdio.h>

#include <unistd.h>

#include <stdlib.h>

int main(int argc,char *argv[]){

    int opt;

    while( (opt = getopt(argc,argv, ":ijf:lr")) != -1){

           switch(opt){

                  case 'i':

                  case 'j':

                  case 'l':

                  case 'r':

                         printf("option:%c\n",opt);

                         break;

                  case 'f':

                         printf("filename:%s\n",optarg);

                         break;

                  case ':':

                         printf("option needsa value\n");

                         break;

                  case '?':

                         printf("unknow option: %c\n", optopt);

                         break;

           }

    }

    for(; optind < argc; optind++){

                  printf("argument:%s\n", argv[optind]);

    }

    return 0;

}

2.设置该文件的第10~30字节为共享锁,第40~50字节为独占锁

#include <unistd.h>

#include <stdlib.h>

#include <stdio.h>

#include <fcntl.h>

const char *test_file = "/text";

int main(){

    int file_desc;

    int byte_count;

    char *byte_to_write = "A";

    struct flock region_1;

    struct flock region_2;

    int res;

    file_desc = open(test_file, O_RDWR | O_CREAT, 0666);

    if(!file_desc){

           fprintf(stderr, "Unable to open %s for read/write\n", test_file);

           exit(EXIT_FAILURE);

    }

    for(byte_count = 0; byte_count < 100; byte_count++){

           (void)write(file_desc, byte_to_write, 1);

    }

    region_1.l_type = F_RDLCK;

    region_1.l_whence = SEEK_SET;

    region_1.l_start= 10;

    region_1.l_len = 20;

    region_2.l_type = F_WRLCK;

    region_2.l_whence = SEEK_SET;

    region_2.l_start= 40;

    region_2.l_len = 10;

    printf("Process %d locking file\n", getpid() );

    res = fcntl(file_desc, F_SETLK, &region_1 );

    if(res == -1){

           fprintf(stderr, "Failed to lock region 1\n");

    }

    res = fcntl(file_desc, F_SETLK, &region_2 );

    if(res ==  -1){

           fprintf(stderr, "Failed to lock region 2\n");

    }

   

    sleep(6);

    printf("Process %d closing file\n", getpid());

    close(file_desc);

   

    return 0;

}

五、调试过程

六、实验结果

1. 编写程序能处理命令行不同的参数选项,当选项是i、j、l、r时,打印这是正确的选项;f选项时需要一个文件名;而其他的选项为错误的选项

2. 设置该文件的第10~30字节为共享锁,第40~50字节为独占锁

七、总结

通过这次实验掌握了程序参数的概念及使用以及文件的锁定。

相关推荐