实 验 报 告
教 学 院 计算机
课程名称 Linux操作系统
专 业 计算机应用
班 级 13应用
姓 名 黄跃然
指导教师 李辉燕
2014 年 09 月 31 日
1
实验四 VI的基本操作
实验课程名:LINUX操作系统
专业班级: 13应用 学号: 201330410123
实验时间:
姓名: 黄跃然 实验地点: K4--406 指导教师: 李辉燕
2
3
4
5
福建农林大学计算机与信息学院实验报告
系: 信息与机电工程系 专业: 计算机科学与技术 年级: 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, ®ion_1 );
if(res == -1){
fprintf(stderr, "Failed to lock region 1\n");
}
res = fcntl(file_desc, F_SETLK, ®ion_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字节为独占锁
七、总结
通过这次实验掌握了程序参数的概念及使用以及文件的锁定。
实验二Linux常用命令使用一、实验目的1.掌握Linux一般命令格式。2.掌握有关文件和目录操作的常用命令。3.掌握有关进程操作…
Linux操作系统实验报告实验编号实验编号实验名称实验名称实验1Linux安装实验2掌握虚拟机的使用实验目的1熟练掌握Linux系…
实验项目名称Linux基础操作实验项目编号一学号组号上机实践日期20xx919上机实践时间2学时一目的本次实验所涉及并要求掌握的知…
专业计算机科学与技术学号姓名Linux操作系统报告单名称系统常用命令任课教师专业计算机科学与技术班级姓名学号完成日期成绩12345…
实验一Linux的基本操作命令一实验目的了解Linux的基本命令实现Linux的文件系统操作二实验内容1在Linux字符环境下练习…
Linux考试实验1修改运行级别,级别切换:(1)vi/etc/inittab将5改为3(2)reboot2修改root密码:进入…
LINUX实验报告专业班级学号姓名实验一实验名称Linux基本命令的使用实验时间2学时实验目的熟练使用Linux字符界面窗口系统的…
实验项目名称Linux基础操作实验项目编号一学号组号上机实践日期20xx919上机实践时间2学时一目的本次实验所涉及并要求掌握的知…
实验二Linux常用命令使用一、实验目的1.掌握Linux一般命令格式。2.掌握有关文件和目录操作的常用命令。3.掌握有关进程操作…
课程编号B080103040Linux操作系统实验报告东北大学软件学院实验一熟悉Linux环境实验内容一练习常用的Shell命令当…