Linux程序设计考试例题

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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

相关文档
最新文档