125、以下描述中,calloc函数使用中不正确的是:(  D)
A、分配并初始化内存块,失败返回NULL;
B、成功返回一个指向包含nmemb个元素数组的指针;
C、数组中每个元素的大小为size个字节;
D、内存单元的数值将被初始化为1;
126、realloc的第二个参数如果为0,则( A )
A、释放原来的内存块;
B、它的作用和malloc函数一样;
C、保持原来的数据不动;
D、不能扩大内存块;
128、alloca的内存从进程的( C )中获取内存。
A、堆
B、代码段
C、栈
D、数据段
129、栈是一个比堆更为“敏感”的资源,栈溢出将导致程序( B )
A、异常中断
B、崩溃
C、正常运行
D、产生信号
131、mmap成功返回指向内存区的指针;失败返回( B )
A、0
B、-1
C、NULL
D、正整数
132、mmap函数标志MAP_SHARED是( C )
A、如果start无效或者正在使用则失败;
B、对映像内存区的写入操作是进程私有;
C、对映像内存区的写入也被复制到文件;
D、多进程共享;
133、虚拟内存技术实现的硬件基础是( A )
A、MMU
B、CPU
C、I/O
D、IIC
135、以下说法正确的是:(  A  )
A、静态库以.a结尾,共享库以.so结尾;
B、静态库以.o结尾,共享库以.c结尾;
C、静态库以.so结尾,共享库以.a结尾;、
D、静态库以.s结尾,共享库以.cpp结尾;
144、进程的上下文指的是:( A  )
A、进程切换时需要保存和恢复的一些 CPU 寄存器的数据;
B、描述虚拟地址空间的信息;
C、描述控制终端的信息;
D、信号相关的信息;
145、内核使程序执行的唯一方法是调用一个( B )函数
A、_exit()
B、exec()
C、exit()
D、main()
146、exit()和_exit()都带一个整型参数,称之为终止状态( C )。
A、run status
B、return status
C、exit status
D、start status 147、以下的代码显示结果是:( A  )
int main()
{
printf("Using _\n");
printf("This is the content in buffer");
_exit(0);
}
A、[root@(none) 1]# ./_exit
Using _
[root@(none) 1]#
B、[root@(none) 1]# ./_exit
[root@(none) 1]#
C、root@(none) 1]# ./exit
This is the content in buffer
[root@(none) 1]#
D、root@(none) 1]# ./exit
This is the content in buffer
[root@(none) 1]#
149、ppid,父进程ID,可以通过( C )获得
A、getpid()
B、getuid()
C、getppid()
D、getgid()
149、一般来说,在fork()之后是父进程先执行还是子进程先执行是( B )的,这取决于内核所使用的调度算法A、确定B、不确定C、父进程在先D、子进程在先
151、fork()创建子进程ID,大于0的整数的进程是:( A )
A、父进程
B、子进程
C、产生异常
D、退出进程
152、vfork()也创建新进程,( C )
A、原进程先运行
B、先复制代码段
C、新进程先运行
D、先复制堆栈
153、有以下情况可能会造成fork()失败( D )
A、进程过少
B、进程低于某一规定极限值
C、低于系统限制
D、超过了系统限制
154、进程调用( B  )函数就可建立一个新对话期
A、setpid()
B、setsid()
C、setgpid()
D、setppid()
155、守护进程,也就是通常所说的( C )进程
A、Damon
B、Dameon
C、Daemon
D、Diemon
156、SIGINT信号的默认处理动作是终止进程,所以直接终止进程而不再返回它的( A )
A、用户空间
B、系统空间
C、堆空间
D、栈空间
157、信号是进程间通信机制中( B )
A、唯一的同步通信机制
B、唯一的异步通信机制
C、多种的异步通信机制
D、多种的同步通信机制
159、以下不属于System V IPC对象的是( A )
A、管道
B、信号灯
C、消息队列
D、共享内存
161、GNU计划中有个著名的条款是(C )
A、GPS
B、GPRS
C、GPL
D、GCC
162、linux文件权限一共10位长度,分成四段,第三段表示的内容是什么( C)
A、文件类型
B、文件所有者的权限
C、文件所有者所在组的权限
D、其他用户的权限
163、不是shell具有的功能和特点的是( A )
A、管道
B、输入输出重定向
C、执行后台进程
D、处理程序命令
164、GNU已经开发出很多成功的软件其中编译程序是( D)
A、gdb
B、shell
C、makefile
D、gcc
165、一般可以用( C )实现自动编译。
gcc B、gdb * C、make D、vi
166、如下哪一个命令可以帮助你知道shell命令的用法( A)
A man
B pwd
C help
D more
167、linux分区类型默认的是:(B )
A vfat
B ext2/ext3
C swap
D dos
168、栈和队列的共同特点是( C)。
A.都是先进先出的  B。都是先进后出  C、只允许在端点处插入和删除元素 D。没有共同点
169、在linux系统,默认的shell是什么(A )
A、bash
B、ash
C、csh
D、gunsh
170、下面哪条命令可用来确保文件”myfile”存在(B )
A、cp myfile    B touch myfile
C、creat myfile    D mkfile myfile
171、某文件的组外成员的权限为只写;所有者有读写权限;组内的权限为只读,则该文件的权限为( B)A、467 B、642 C、476 D、764
172、linux将存储设备和输入/输出设备均看做文件来操作,下列选项(C )不是以文件的形式出现。
A、目录
B、软链接
C、i节点表
D、网络适配器
173、文件之间可以建立两种链接文件:软链接和硬连接,硬链接的特点是( C)
A、等同于文件复制操作
B、类似于文件复制,但新的连接文件并不占用文件磁盘存储空间
C、删除源文件,将使其他连接文件失效
D、可以对目录文件名建立硬链接
174、重定向的符号“〉”表示(A )
A、输出追加
B、输入追加
C、输出重定向、原来的文件被改写
D、管道
二、填空题
20、进程的执行模式划分为系统模式和用户模式
23、fork()之后,父进程设置的锁,子进程不继承
24、守护进程常常在系统引导装入时启动,在系统关闭时退出(终止)
27、SIGALRM是闹钟信号,当由  alarm()函数设置的时间已经超过后产生此信号
28、用户程序可调用  signal()或者 sigaction()      通知内核如何处理某种信号
29、信号有三种处理方式:默认,忽略,捕获
30、忽略信号,但有两种信号  SIGKILL和SIGSTOP        却决不能被忽略
31、SIGQUIT 当用户在终端上按退出键  ctrl+\        时,产生此信号,并送至前台进程组中的所有进程
32、非实时信号都不支持排队,都是不可靠的
33、实时信号都支持排队,都是可靠的
34、popen创建一个管道然后 fork()一个子进程执行command。
42、前台启动的进程使用  ctrl+C    终止。
43、在linux系统中,以文件方式访问设备
45、有数组定义int a[2][2]={{1},{2,3}};则a[0][1]的值为  0    。
46、常量O_RDONLY,O_WRONLY,O_RDWR,都在头文件  fcntl.h      中。
49、close函数成功时返回是 0    ,失败时返回 -1    。
判断题
52、动态加载dl函数,头文件<dlfcn.h>,gcc选项-ldl(V)
53、void *dlopen(const char *filename, int flag)中的RTLD_NOW是立即解析所有符号(V)
54、进程是一个抽象实体,当它执行某个任务时,将要分配和释放各种资源(V)
55、进程是一个动态的概念,它是程序执行的过程,包括了动态创建、调度和消亡的整个过程(V)
59、PID和PPID都是非零正整数(V)(最小值均为1)
60、wait()/waitpid()可以获得进程终止的状态(V)
62、内核使程序执行的唯一方法是调用一个exec()函数(V)
64、信号都被定义为正整数(信号编号), 没有一个信号其编号为0(V)
65、线程解除绑定后,内存资源在当线程结束或返回时,随即释放(V)
73、任务创建后开始调度。(  X  )
74、在fcntl()中,cmd=F_DUPFD表示添加一个现有的描述符。( X)(表示复制的一个描述符  dup复制)
75、调试程序时,需要停止程序运行后才可查看变量内容。( V  )
77、在gdb调试过程中,用make命令可以不用退出gdb就可以重新产生可执行文件。( V  )
78、一个shell脚本运行时可以看成是一个linux作业,它可能由多个进程完成。(  V )
79、exit()立即进入内核,_exit()则先执行一些清除处理,然后进入内核( X)
80、在Linux中,每一个系统与用户进行交流的界面称为终端,每一个从此终端开始运行的( V )
简述题目
1,简述信号的产生条件
键盘,内存溢出,kill,清零,时针到触发条件时
2,什么是文件的描述符?怎样获得?列举出系统访问文件的几个函数(四个函数以上)?
文件描述符:一个正整数,是文件的指代,各种函数通过函数指代
获得:open的返回值
系统访问文件函数:open(),close(),read(),write(),list()
3,描述select函数定义和作用。
定义:现实多路I/O的侦听
作用:
什么是孤儿进程?什么是僵死进程?
没有父进程,或子进程运行时父进程终止
僵(死)尸进程:
什么是线程?和进程有什么区别?例举三个和线程有关的函数?
线程:同属一个进程,在进程体内并行工作
3个函数:pthread_creat  pthread_cancle  pthread_mutex
五、综合工程设计
1、编写程序用无名管道实现进程间通讯
#include <unistd.h>
#include <sys/types.h>
printf函数的作用是向终端
#include <sys/wait.h>
#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
#include <limits.h>
#define BUFSZ PIPE_BUF
void err_quit(char *msg);
int main(int argc, char *argv[])
{
int fd[2];
int fdin;
char buf[BUFSZ];
int pid, len;
if((pipe(fd)) < 0)
err_quit("pipe");
if((pid = fork()) < 0)
err_quit("fork");
if (pid == 0) {
close(fd[1]);
while((len = read(fd[0], buf, BUFSZ)) > 0)
{
write(STDOUT_FILENO,"CHLD:",5);
write(STDOUT_FILENO, buf, len);
}
close(fd[0]);
exit(0);
} else {
close(fd[0]);
if((fdin = open(argv[1], O_RDONLY)) < 0) {
perror("open");
write(fd[1], "123\n", 4);
} else {
while((len = read(fdin, buf, BUFSZ)) > 0)
write(fd[1], buf, len);
close(fdin);
close(fd[1]);
}
waitpid(pid, NULL, 0);
exit(EXIT_SUCCESS);
}
void err_quit(char *msg)
{
perror(msg);
exit(EXIT_FAILURE);
}
2、用linux文件操作函数编写程序,显示出文件读5个字节前后文件指针位置。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。