linux C 高级程序设计试卷

linux C 高级程序设计试卷
linux C 高级程序设计试卷

湖南人文科技学院计算机系科学与技术专业07 级

2010 ---20 11 学年第一学期linux c高级程序设计

课程

补考试卷

考核方式: (闭卷) 考试时量:120 分钟

一、选择题(每小题2分,共30分)

1. /root目录是:

A. 系统的根目录

B. 超级用户的主目录

C. 动态连接库

D. 系统管理程序

2. 下列不是可执行程序运行时内存结构的是。

A. 代码区

B. 数据区

C. 栈堆区

D. 变量区

3. 在Linux操作系统中,当要使用光驱时,首先需要使用()命令加载光驱

A mount /dev/fd0 /mnt/floppy

B mount /dev/floppy /mnt/floppy

C mount /dev/cdrom /mnt/cdrom

D mount /mnt/floppy /mnt/fd0

4. 命令”rm –f /tmp/temp ”的功能是()。

A 删除/tmp/temp文件,但是需要键入”y”进行确认

B 直接删除/tmp/temp文件,不用确认,因为有-f选项

C 创建/tmp/temp文件,但是需要键入”y”进行确认

D 直接创建/tmp/temp文件,不用确认,因为有-f选项

5. 任何时候用户需要回到上一级目录使用命令。

A. cd ~

B. pwd

C.cd .

D. cd ..

6. 文件exer1的访问权限为744,现要取消文件所有者的执行权限,同时增加同组用户的写权限,

下列命令中正确的是。

A. chmod u+x, g+w exer1

B. chmod 646 exer1

C. chmod a-x, g+w exer1

D. chmod g+w exer1

7.在vi编辑器中执行存盘退出命令是。

A . q

B . wq!

C . q!

D . WQ

8当打开vi编辑器编辑文件时,vi处于()模式。

A 命令模式

B 编辑模式

C 实模式

D 虚模式

9.为了将当前目录下的归档文件myftp.tgz解压缩,可以使用:

A. tar xvzf myftp.tgz

B. tar xvf myftp.tgz

C. tar vzf myftp.tgz

D. tar jvzf myftp.tgz

10. 在Linux系统中,硬件设备大部分是安装在______目录下的。

A. /mnt

B. /dev

C. /proc

D. /swap

11.用vi编辑并保存文件后,要退出vi编辑器时,可以转换到命令模式输入()

A :q

B :a

C :b

D :c

12.下列说法错误的是。

A. 静态变量只初始化一次。

B. 全局变量和静态局部变量在运行时改变其值。

C. 堆区数据由编译器自动分配释放。

D. 函数中定义的局部变量内存分配由编译器自动分配释放。

13.在使用mkdir命令创建新的目录时,在其父目录不存在时先创建父目录的选项是。

A . -m

B . -d

C. -f D . –p

14. 下列有关fork()函数返回值说法错误的是。

A. 函数成功返回时,一次返回两个值,错误返回时为-1。

B. 返回值等于0表示子进程。

C. 返回值大于0表示父进程。

D. 大于0的返回值为父进程PID 号。

15.下列进程间通信方式中能实现不同计算机间进程通信的是。

A.管道

B.消息队列

C.套接字

D.共享内存二、填空题(每空2分,共20分)

16.管道分无名管道和有名管道,用于父进程和子进程间的通信的管道是:。

17.常用的socket类型有两种:和数据报类型。

18.为了获得父进程的ID号,可是使用函数。

19.在Linux下调试c程序时,在提示符(gdb)下输入b10表示。

21.用GCC编译过程可以被细分为四个阶段:预处理、编译、汇编和。

20.关闭防火墙命令是:。

22.Linux中文件编程可以使用两类函数:和C语言库函数。

23.使用alarm函数可以设置一个时间值(闹钟时间),当设置的时间到了时,产生信号。

24.标准设备文件有:标准输入文件,标准输出文件和。

25.编译生成可调试可执行文件时,需加参数。

三、程序填空题(每空4分,共16分)

26.下列是建立管道通信程序,父进程等待子进程退出。请补充完整。

#define MAX_DATA_LEN 256

int main() {

pid_t pid;

int pipe_fd[2];

char buf[MAX_DA TA_LEN];

char data[]="Pipe Test Program";

int real_read,real_write;

memset((void*)buf,0,sizeof(buf));

if(pipe(pipe_fd)<0)

{

printf("pipe create error\n");

exit(1);

}

if((pid=fork())==0)

{

(1);

if((real_read=read(pipe_fd[0],buf,MAX_DATA_LEN))>0)

printf("%d bytes read from the pipe is'%s'\n",real_read,buf);

close(pipe_fd[0]);

exit(0);

}else if(pid>0){

close(pipe_fd[0]);

if((real_write=write(pipe_fd[1],data,strlen(data)))!=-1)

printf("Parent wrote%d bytes:'%s'\n",real_write,data);

close(pipe_fd[1]);

(2);

exit(0);

}

}

(1) (2)

27.下列是建立守护进程程序。请补充完整。

int main()

{

pid_t pid;

int i,fd;

char*buf="This is a Daemon\n";

pid=fork();

if(pid<0){

29. 阅读程序,请写出程序实现的功能。 #include #include #include #include #include void main() { pid_t pc,pr; pc=fork(); if (pc==0) { printf("this is child process with pid of %d\n",getpid()); sleep(10); } else if (pc>0) { pr=wait(NULL); printf("I catched a child process with pid of %d\n",pr) } exit(0); }

功能:

五、编程题(共26分)

30. 编写strcat 函数(已知strcat 函数的原型是char *strcat (char *strDest, const char *strSrc); (满分10分)

(其中strDest 是目的字符串,strSrc 是源字符串。 不调用C 的字符串库函数,请编写函数 strcat 。)

31. 使用fork()创建一个子进程,然后让其子进程暂停5s(使用了sleep()函数)。接下来对原有的父进程使用waitpid()函数,并使用参数WNOHANG使该父进程不会阻塞。若有子进程退出,则waitpid()返回子进程号;若没有子进程退出,则waitpid()返回0,并且父进程每隔一秒循环判断一次(编程可不写头文件)。

(满分16分)

相关主题
相关文档
最新文档