操作系统移植及应用程序开发课程设计Word格式.docx

上传人:b****4 文档编号:17843335 上传时间:2022-12-11 格式:DOCX 页数:27 大小:943.64KB
下载 相关 举报
操作系统移植及应用程序开发课程设计Word格式.docx_第1页
第1页 / 共27页
操作系统移植及应用程序开发课程设计Word格式.docx_第2页
第2页 / 共27页
操作系统移植及应用程序开发课程设计Word格式.docx_第3页
第3页 / 共27页
操作系统移植及应用程序开发课程设计Word格式.docx_第4页
第4页 / 共27页
操作系统移植及应用程序开发课程设计Word格式.docx_第5页
第5页 / 共27页
点击查看更多>>
下载资源
资源描述

操作系统移植及应用程序开发课程设计Word格式.docx

《操作系统移植及应用程序开发课程设计Word格式.docx》由会员分享,可在线阅读,更多相关《操作系统移植及应用程序开发课程设计Word格式.docx(27页珍藏版)》请在冰豆网上搜索。

操作系统移植及应用程序开发课程设计Word格式.docx

sys/time.h>

intlimit=10;

voidtimeout_info(intsigno)

{

if(limit==0)

{

printf("

Sorry,timerlimitreached.\n"

);

exit(0);

}

printf("

only%dsecondsleft.\n"

limit--);

}

voidinit_sigaction(void)

structsigactionact;

act.sa_handler=timeout_info;

act.sa_flags=0;

sigemptyset(&

act.sa_mask);

sigaction(SIGPROF,&

act,NULL);

voidinit_time(void)

structitimervalval;

val.it_value.tv_sec=1;

val.it_value.tv_usec=0;

val.it_interval=val.it_value;

setitimer(ITIMER_PROF,&

val,NULL);

intmain(void)

char*str;

charc;

init_sigaction();

init_time();

Youhaveonly10secondsforthinking.\n"

while

(1);

exit(0);

四、设计效果

图2超级终端显示效果

任务三:

多进程设计

(1)掌握Linux多进程程序编写。

(2)在设计工作目录下,为本设计建立工作目录process。

Mkdirprocess

(3)进入process目录,使用自己熟悉的编辑器(如vi)建立文件process.c,并编写如程序清单的代码。

(4)将光盘相应工程的Makefile文件复制到当前目录下,使用编辑器将其打开,并对Makefile文件进行如下修改保存,退出编辑器。

EXEC=process

OBJS=process

SRC=process

(5)输入make命令,对程序进行编译,编译完毕在当前目录下会生成可执行文件process。

(6)启动ARMLinux,进行NFS连接,进入/mnt/process目录,执行process程序。

./process

三.实验清单

fcntl.h>

unistd.h>

stdlib.h>

sys/types.h>

sys/wait.h>

intmain(intargc,char*argv)

intval,stat;

pid_tchild;

\nTrytocreatnewprocess.\n"

child=fork();

switch(child)

case-1:

//fault

perror("

fork.n"

exit(EXIT_FAILURE);

case0:

//childprocess

printf("

Thisischild.\n"

\tchildpidis%d\n"

getpid());

\tchildppidis%d\n"

getppid());

exit(EXIT_SUCCESS);

default:

//fatherprocess

waitpid(child,&

stat,0);

Thisisparent.\n"

\tchildexitedwith%d\n"

stat);

exit(EXIT_SUCCESS);

图3超级终端显示效果

任务四:

多线程设计

(1)掌握Linux多线程程序编写。

(1)在设计工作目录下,为本设计建立工作目录thread。

Mkdirthread

(2)进入process目录,使用自己熟悉的编辑器(如vi)建立文件thread.c,并编写如程序清单的代码。

EXEC=thread

OBJS=thread

SRC=thread

注意:

本程序的Makefile必须修改,为链接选项加上-lpthread参数。

(4)输入make命令,对程序进行编译,编译完毕在当前目录下会生成可执行文件thread。

(5)启动ARMLinux,进行NFS连接,进入/mnt/thread目录,执行thread程序。

./thread

sys/ioctl.h>

pthread.h>

inttask1(int*cnt)

while(*cnt<

5)

sleep

(1);

(*cnt)++;

task1cnt=%d.\n"

*cnt);

return(*cnt);

inttask2(int*cnt)

sleep

(2);

task2cnt=%d.\n"

intmain(intargc,char**argv)

intresult;

intt1=0;

intt2=0;

intrt1,rt2;

pthread_tthread1,thread2;

result=pthread_create(&

thread1,PTHREAD_CREATE_JOINABLE,(void*)task1,(void*)&

t1);

if(result)

perror("

pthread_create:

task1.\n"

exit(EXIT_FAILURE);

thread2,PTHREAD_CREATE_JOINABLE,(void*)task2,(void*)&

t2);

task2.\n"

pthread_join(thread1,(void*)&

rt1);

pthread_join(thread2,(void*)&

rt2);

total%dtimes.\n"

t1=t2);

returnvalueoftask1:

%d.\n"

rt1);

retuanvalueoftask2:

rt2);

exit(EXIT_SUCCESS);

4、设计效果

图4超级终端显示效果

任务五:

文件和目录操作目录设计

(1)掌握Linux下文件和目录的基本操作。

(1)在设计工作目录下,为本设计建立工作目录file。

Mkdirfile

(2)进入process目录,使用自己熟悉的编辑器(如vi)建立文件file.c,并编写如程序清单的代码。

EXEC=file

OBJS=file

SRC=file

(4)输入make命令,对程序进行编译,编译完毕在当前目录下会生成可执行文件file。

Make

(5)启动ARMLinux,进行NFS连接,进入/mnt/file目录,执行file程序。

./file

ls/tmp

FILE*fp;

intnum;

intfolder;

chara[]="

HelloARMLinux!

"

;

fp=fopen("

/tmp/linux.txt"

"

w+"

if(fp==NULL)

\nFailtoopenlinux.txt!

\n"

exit(-1);

num=fwrite(a,sizeof(a),1,fp);

%dbytedatahaswrittentolinux.txt\n"

num*sizeof(a));

folder=mkdir("

/tmp/linux"

1);

if(folder==-1)

\nFailtocreatefolderlinux!

\nIthasexiatedorthepathiserror!

Folderlinuxcreatedsuccess!

close(fp);

return0;

图5超级终端显示效果

任务六:

UDP设计

(1)掌握Linux下UDP通讯编程。

(1)在设计工作目录下,为本设计建立工作目录udp。

Mkdirudp

(2)进入udp目录,在内创建文件夹utalker,并在utalker目录下,使用自己熟悉的编辑器(如vi)建立文件talker.c,并编写如程序清单的代码。

cdudp

mkdirutalker

EXEC=talker

OBJS=talker

SRC=talker

(4)输入make命令,对程序进行编译,编译完毕在当前目录下会生成可执行文件talker。

(5)在udp目录下创建listener,并在listener目录下编写侦听端(监听断)程序文件listener.c,编写或者使用光盘提供的Makefile文件编译,得到侦听端程序listener,并运行。

mkdirlistener

cdlistener

make

./listener

(6)启动ARMLinux,进行NFS连接,进入/mnt/udp/utalker目录,运行发话端talker,观察主机是否接收到字符串“MagicARM2410UDPExperiment.”。

./talker192.168.1.92

Listener:

errno.h>

string.h>

netdb.h>

netinet/in.h>

sys/socket.h>

#definePORT5000

#defineBACKLOG10

#defineLENGTH512

intmain()

{intsockfd;

intnsockfd;

intsin_size;

charrevbuf[LENGTH];

structsockaddr_inaddr_local;

structsockaddr_inaddr_remote;

if((sockfd=socket(AF_INET,SOCK_DGRAM,0))==-1)

{printf("

ERROR:

FailedtoobtainSocketDescriptor!

return(0);

if((sockfd=socket(AF_INET,SOCK_DGRAM,0))==-1)

{printf("

else{printf("

OK:

ObtainSocketDescriptorsuccessfully.\n"

addr_local.sin_family=AF_INET;

addr_local.sin_port=htons(PORT);

addr_local.sin_addr.s_addr=INADDR_ANY;

bzero(&

(addr_local.sin_zero),8);

if(bind(sockfd,(structsockaddr*)&

addr_local,sizeof(structsockaddr))==-1)

FailedtobindPort%d\n"

PORT);

return(0);

}else{printf("

BindthePort%dsuccessfully.!

sin_size=sizeof(structsockaddr);

if(num=recvfrom(sockfd,revbuf,LENGTH,0,(structsockaddr*)&

addr_remote,&

sin_size)==-1)

ERROR!

}else{

%s\n"

revbuf);

close(sockfd);

return(0);

talker:

intmain(intargc,char*argv[])

charsdbuf[LENGTH];

charsdstr[]={"

MagicARM2410UDPExperiment."

};

if(argc!

=2)

Usage:

talkerHOSTIP(ex:

./talker192.168.1.92).\n"

addr_remote.sin_family=AF_INET;

addr_remote.sin_port=htons(PORT);

inet_pton(AF_INET,argv[1],&

addr_remote.sin_addr);

(addr_remote.sin_zero),8);

bzero(sdbuf,LENGTH);

num=sendto(sockfd,sdstr,strlen(sdstr),0,(structsockaddr*)&

addr_remote,sizeof(structsockaddr_in));

if(num<

0){

Failedtosendyoudata!

argv[1],num);

Sentto%stotal%dbytes!

 

图6.1虚拟机显示效果

图6.2超级终端显示效果

任务七:

TCP设计

(1)掌握Linux下TCP通讯编程。

(1)在设计工作目录下,为本设计建立工作目录tcp。

Mkdirtcp

(2)进入tcp目录,在内创建文件夹uclient,并在uclient目录下,使用自己熟悉的编辑器(如vi)建立文件client.c,并编写如程序清单的代码。

cdtcp

mkdiruclient

EXEC=client

OBJS=client

SRC=client

(4)输入make命令,对程序进行编译,编译完毕在当前目录下会生成可执行文件client。

(5)在tcp目录下创建server,并在server目录下编写侦听端(监听断)程序文件server.c,编写或者使用光盘提供的Makefile文件编译,得到侦听端程序server,并运行。

mkdirserver

cdserver

./server

(6)启动ARMLinux,进行NFS连接,进入/mnt/tcp/uclient目录,运行发话端client,运行成功后,在服务器端输入字符串并回车,在客户端观察是否收到

./client192.168.1.92

client:

#include<

arpa/inet.h>

sys/unistd.h>

#defineLENGTH256

intmain(intargc,char*argv[])

intsockfd;

/talker192.168.0.235).\n"

if((sockfd=socket(AF_INET,SOCK_STREAM,0))==-1)

addr_remote.sin_port=htons(PORT);

if(connect(sockfd,(structsockaddr*)&

addr_remote,sizeof(structsockaddr))==-1){

Failedtoconnecttothehoat!

else

Haveconnectedtothe%s!

argv[1]);

while(strcmp(revbuf,"

exit"

)!

=0)

bzero(revbuf,LENGTH);

num=recv(sockfd,revbuf,LENGTH,0);

switch(num)

case-1:

return

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 机械仪表

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1