Linux程序设计考试例题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
例题1程序A生成1个文件,其大小为1000字节,其内容为小写字母abcd...z的循环。试编写该程序。
文件名t
1.c
#include
#include
int main(){char x;
int i;
int fd=open("aa",O_CREAT|O_TRUNC|O_WRONLY,0666);
if(fd<0){printf("open file error!\r\n");exit
(0);};
for(i=0;i<1000;i++){x='a'+(i%26);
write(fd,&x,1);}close(fd);}例题2读出一个文件a.txt的倒数第2个字节和倒数第1个字节,显示在屏幕上。并且显示出当前时间。
文件名t
2.c
#include
#include
#include
int main(){char x[2];
int fd=open("a.txt",O_RDONLY);
if(fd<0){printf("open file error!\r\n");exit
lseek(fd,-3,SEEK_END);
read(fd,x,2);
printf("倒数第二和第一字节为%c%c\r\n",x[0],x[1]);
close(fd);
time_t t;
time(&t);
printf("当前时间:
%s",asctime(localtime(&t)));}例题3产生一个进程树父进程有3个子进程,这三个子进程分别有2个子进程。每个进程退出前打印自己的进程id号
文件名t
3.c
#include
#include
int main(){int ret,i;
for(i=0;i<3;i++){ret=fork();
if(ret==0)break;}if(ret==0)
for(i=0;i<2;i++){ret=fork();
if(ret==0)break;}sleep
(10);
printf("thread %d is exiting now \r\n",getpid());}测试方法:
在另一窗口
#pstree-a
例题4编写两程序实现消息队列通信程序名t4snd.c
#include
#include
#include
#include
#include
#include
#include
struct msgbuf{long mtype;
char ctext[100];
};
int main(){struct msgbuf buf;
int msid;
msid=msgget(0x1000,0666|IPC_CREAT); if(msid<0){printf("open failed\r\n");exit (0);};
while
(1){buf.mtype=getpid();
scanf("%s",buf.ctext);
while((msgsnd(msid,&buf,strlen(buf.ctext),0))<0){if(errno==EINTR)continue;
return ;}if(strcmp(buf.ctext,"exit")==0)break;}return 0;}文件名t4rev.c
#include
#include
#include
#include
#include
#include
#include
struct msgbuf{long mtype;
char ctext[100];
};
int main(){struct msgbuf buf;
int msid,ret;
msid=msgget(0x1000,0666|IPC_CREAT);
if(msid<0){printf("open failed\r\n");exit
(0);};
while
(1){memset(&buf,0,sizeof(buf));
while((ret=msgrcv(msid,&buf,sizeof(buf.ctext),0,0))<0){if(errno==EINTR)continu e;
return ;}printf("%d%s\r\n",buf.mtype,buf.ctext);
if(strcmp(buf.ctext,"exit")==0)break;}msgctl(msid,IPC_RMID,NULL); return 0;}测试方法
首先运行t4snd,输入三行字符串,最后一行必须是小写字母的exit #./t4snd
Hello
World
exit
则t4snd自动退出
然后运行t4rev
#./t4rev
例题5网络TCP的服务端
文件名server.c
#include
#include
#include
#include
#include
#include
#define PORT 82
#define BUFSIZE 512