linux课程设计实验总结,Linux课程设计实验报告.pdf

Linux课程设计实验报告

本科实验报告

课程名称: OS 实验报告

姓 名:

学 院: 计算机科学与技术

系: 计算机科学与技术

专 业: 计算机科学与技术

年 级:

学 号:

指导教师:

2010 年 1 月 15 日

2

一.实验目的

1.掌握 Linux 操作系统的使用方法;

2.了解 Linux 系统内核代码结构;

3.掌握实例操作系统的实现方法。

二. 实验环境

Linux-2.6.20.1(旧内核为 2.6.18.1)

三. 实验内容

1.编写一个 C 程序实现文件拷贝

2.编写一个 C 程序实现三个程序并发执行

3.通过系统调用实现文件拷贝

4.通过增加设备驱动的方法实现字符设备的驱动

5.利用 GTK 做一个任务管理器

四. 实验具体过程

1.编写一个 C 程序实现文件拷贝.

a.程序说明

通过循环每次使用 fgetc 读取一个字符,直到文件末尾结束.

b.程序源码

#include

#include

#include

int main()

{

FILE *f1,*f2;

f1=fopen("./source.txt","r");

f2=fopen("./source2.txt","w");

int s=0;

while(!feof(f1))

{

s=fgetc(f1);

if(s==EOF) break;

fputc(s,f2);

}

fclose(f1);

fclose(f2);

printf("Copy complete!!\n");

}

2. 编写一个 C 程序实现三个程序并发执行

a.程序说明

首先是主程序通过 fork 函数创建新进程,然后通过调用 execv 打开新文件以

到并发执行三个程序的目的.

3

子程序则使用了 GTK 编程,在一个窗体中放置了一个滚动条,加了个文字标签以改善视

觉效果.

b.程序源码

子程序代码:

#include

typedef struct _ProgressData {

GtkWidget *window;

GtkWidget *pbar;

int timer;

gboolean activity_mode;

} ProgressData;

itoa(int i,char* string)

{

int power,j;

j=i;

for(power=1;j>=10;j/=10)

power*=10;

for(;power>0;power/=10)

{

*string++='0'+i/power;

i%=power;

}

*string++='%';

*string='\0';

}//将整数转换成字符串

/* 更新进度条,这样就能够看到进度条的

移动 */

gint progress_timeout( gpointer data )

{

ProgressData *pdata = (ProgressData

*)data;

gdouble new_val;

char s[10];

/* 使用在调整对象中设置的取值范

围计算进度条的值 */

new_val =

gtk_progress_bar_get_fraction

(GTK_PROGRESS_BAR (pdata->pbar)) +

0.005;

if (new_val > 1.0)

new_val = 0.0;

/* 设置进度条的新值 */

itoa(new_val*100,s);

gtk_progress_bar_set_fraction

(GTK_PROGRESS_BAR (pdata->pbar),

new_val);

gtk_progress_bar_set_text

(GTK_PROGRESS_BAR (pdata->pbar),s);

/* 这是一个 timeout 函数,返回 TRUE,

这样它就能够继续被调用 */

return TRUE;

}

/* 清除分配的内存,删除定时器(timer) */

void

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值