--------------------------------------------------------选择填空------------------------------------------------------------
2.获取目录的系统调用函数为 ( getcwd() )
4.调用进程的进程标识号(pid)的系统函数是 (getpid())
5.一个进程是 (PCB 结构与程序和数据的组合)
6.调用 (abort函数) 不属于正常结束进程的方法
7.(fifo 管道)进程之间的通信,数据不可以重复读
8.pthread_exit (终止线程)
9.函数调用int fcntl(int fd, int cmd);来实现文件描述符的复制,cmd参数应使用 (F_DUPFD)
11.c语言中没有明确给定初值的全局变量和静态变量存放在 (未初始化数据区)
12.修改文件权限命令:( chmod )
13.命令行由( shell )函数提供
14.文件描述符的数据类型( int )
15.Linux下获取文件属性函数:( stat())
16.向消息队列发送信号:msgsnd () 接收队列的函数: msgrcv()
创建消息队列:msgget() IPC_PRIVATE
msgctl()IPC_STAT 获取 IPC_SET 设置 IPC_RMID 删除
-
shmget()函数用来创建共享内存 IPC_PRIVATE
shmat()函数 作用就是将共享主存区映射到进程的虚拟地址空间
shmdt()函数 用于把一个共享主存区从指定进程的虚拟地址空间断开
shmctl()函数 用来控制共享内存
18.线程的创建函数:pthread_create() 线程分离状态:pthread_detach()
退出线程:pthread_exit() 取消线程:pthread_cancel()
19.互斥锁的两种状态:(上锁 解锁)
21.getpid()获取进程标识号 getppid()获取父进程进程标识号
getuid()用户识别码 geteuid()有效的用户识别码
25.查看进程的命令:ps
26.在创建文件和目录时候,有默认权限。如果umask值为0022,则文件的默认权限为(0644)目录的默认权限为(0755)
1.linux中把分区和目录对应的过程叫做(挂载)
2.信号是在软件层次上对(中断)机制的一种模拟, 是一种异步通信方式。
3.gcc编译四个阶段:(预处理、编译、汇编和链接)
4.编译有线程的文件要加 (-lpthread)参数
5.父进程等待子进程的结束,可以使用的函数是(wait())和(waitpid())
6.linux主要有两个信号安装函数,分别是什么?(signaction())、(signal())
7.Linux操作系统内核由(c语言和汇编语言)编写完成。
8.目录(/boot)下存放linux操作系统启动时所要用到的程序
9.Linux 系统的设备文件分为三类?(字符设备文件、块设备文件和网络设备文件)
10.Linux 中采用“一对一”的线程机制,也就是一个用户线程对应一个(内核线程)
11.vim三种模式:在命令模式下按下(:(英文冒号))就进入了底线命令模式。
12.Vim的三种模式:(命令模式 插入模式 底线命令模式)
13.标准I/O提供了三种类型的缓冲,分别是 (全缓冲 行缓冲 不带缓冲)
14.文件系统四部分 (引导块,超级块,索引节点,数据块) (超级块)用于存放文件的控制信息。
15.一个完整的信号生命周期包含4个重要的事件,这4个重要事件分别是?(信号诞生、信号在进程中注册、信号在进程中注销、信号处理函数执行完毕)
16.互斥锁只有两种状态,即?(上锁( lock )和解锁( unlock ))
17.线程本身调用(pthread_exit)函数可以退出线程。
18.向消息队列发送消息的函数是(msgsnd)
19.(fcntl)系统调用可以根据文件描述符来操作文件特性。
20.Valgrind包括很多工具,(Memcheck)是valgrind应用最广泛的工具,一个重量级的内存检查器,能够发现开发中绝大多数内存错误使用情况,(Cachegrind)是主要用来检查程序中缓存使用出现的问题。
Memcheck ------> 这是valgrind应用最广泛的工具,一个重量级的内存检查器,能够发现开发中绝大多数内存错误使用情况
Callgrind ------> 它主要用来检查程序中函数调用过程中出现的问题。
Cachegrind ------> 它主要用来检查程序中缓存使用出现的问题。
Helgrind ------> 它主要用来检查多线程程序中出现的竞争问题。
Massif ------> 它主要用来检查程序中堆栈使用中出现的问题。
Extension ------> 可以利用core提供的功能,自己编写特定的内存调试工具
21.信号发送函数中, (alarm)和(setitimer())用于设置定时器,当计时时间到达时,向进程发送SIGALRM信号。
22.在标准IO库中,rewind函数作用?(将文件内部的位置指针重新指向一个流(数据流/文件)的开头)
23.c语言中没有明确给定初值的全局变量和静态变量存放在哪儿?(未初始化数据区)
24.函数geteuid()用于得到进程的? (有效的用户识别码)
25.当一个线程的属性设置为(分离状态 detach),该线程结束时立即释放它所占有的系统资源。
26.(接到一个信号并终止)属于异常终止一个进程
27.(pthread_key_create()) 命令是创建线程私有数据
28.(套接字)通信方式适用于不同机器之间的进程通信
29.linux中通过调用waitpid()函数得到进程的退出信息,该函数原型为pid_t waitpid(pid_t pid, int *status, int options);当第一个参数pid取值为-1时,表示(等待任一子进程退出,相当于 wait())
30.Linux环境中使用kill函数向进程或进程组发送信号。Kill函数原型为
int kill(pid_t pid, int signo);当第一个参数pid>0时表示( 发送信号给进程ID为pid的进程 )
pid>0 将信号传给进程识别码为pid 的进程。
pid=0 将信号传给和目前进程相同进程组的所有进程
pid=-1 将信号广播传送给系统内所有的进程
pid<0 将信号传给进程组识别码为pid绝对值的所有进程
31.修改消息队列状态信息的命令是(msgctl())
32.共享主存基本操作(shmat())将共享主存区映射到进程虚拟地址空间
33.lseek(fd,位移数,whence):设置文件偏移量
33.length=lseek(fd,0,SEEK_END);中的length的值表示 (文件的大小)
34.文件描述符的数据类型:int
35.文件创建目录: ( mkdir())
36.命令行有什么函数提供:shell
37.getpid()获取子进程id getppid()获取父进程id
38.getuid()获取用户id geteuid()获取有效用户id
39.更改目录:cd ;查看当前所在的目录位置: pwd;查看目录下的文件: ls;修改文件权限:chmod;查看进程:ps
40.进程中不能忽略的两个信号?(SIGSTOP和SIGKILL)
41.UDP,TCP属于(传输层)协议。
42.移动指针lseek函数的参数:(lseek(int fd ,off_t offset , int whence))
43.一个进程是 ( PCB 结构与程序和数据的组合)
44.一个进程调用 wait 或 waitpid 函数,可能产生 3 中情况,下列不属于这 3 种情况的是 (如果该进程没有子进程,立即返回,返回值为 0 (异常退出 -1))
45.程序和进程是两个不同的概念,以下不能描述这个观点的是 (同一个程序运行 10 次,产生的是同一个进程)
46.哪种进程之间的通信,数据不可以重复读(fifo、 管道)
47.下述是Linux下多线程编程常用的pthread库提供的函数名和意义,说法不正确的是?(pthread_exit杀死一个线程 —结束进程)
48.对线程函数来说,说法正确的是:(pthread_create中参数arg是传递给start_routine函数的参数)
49.对互斥锁及条件变量说法不正确的是:(在使用条件变量时,互斥锁会失去作用,所以是否有互斥锁关系不重要)
50.以下说明正确的是:(线程是一个独立的指令流,是在进程中被创建的,随进程的关闭而关闭)
51.线程A SendMessage给线程B,线程B处理该消息时又SendMessage给线程A,会出现:(继承执行)
52.linux文件系统通常由四部分组成:引导块,超级块,索引节点和 (数据块)
53.任何进程在运行时默认打开的三个流对象,都有相应的文件描述符,标准文件描述符定义标准输入设备的值为(0)
54.系统调用的函数原型int open(const char *pathname, int flags),flag值中(O_TRUNC)表示若文件存在且为只读或只写成功打开,则将长度截为0。
55.使用下列函数调用int fcntl(int fd, int cmd);来实现文件描述符的复制,cmd参数应使用哪一个?(F_DUPFD)
56.获取目录的系统调用函数为(getcwd())
57.linux 文件系统由四部分组成,(超级块)用于存放文件的控制信息。
58.使用 gdb 调试程序时,next 和 step 命令的作用?(next:单步运行,不进入函数内部; setp:单步运行,进入函数内部)
59.返回调用进程的进程标识号的系统函数是(getpid)
61.进程的堆区:用于动态内存分配。一般由程序员分配和释放,若程序员不释放,程序结束时由 OS 回收。
- Linux 文件系统中的块有(根据块使用的不同):引导块、超级块、Inode 块、数据块。 控制信息、文件基本属性等是 Inode 节点,为文件系统索引。存放数据的为数据块。超级块中含有文件系统的基本信息,如块大小、指向空间 inode 和数据块的指针等相关信息。
63.进程运行时默认打开的标准对象:标准输入设备 stdin、标准输出设备 stdout、标准错误 输出设备 stderr
64.修改文件权限命令:chmod、chgrp、chown。
65.文件描述符为?整型。对于用户空间来说,任何打开的文件都将分配一个唯一非负整数, 用于标识该打开文件,该值即文件描述符,为一个大于等于 0 的整数。
66.权限的值?读:4 r 写:2 w 执行:1 x (主 组 其他)
67.获取文件属性,是否穿透?
stat:具有穿透能力,直接穿越链接文件,获取所被链接文件的信息。
lstat:无穿透能力,不穿透链接文件,文件类型还为链接文件。
- opendir 函数:打开一个目录,返回一个目录流指针。参数为欲打开目录的名称(路径)。
mkdir 函数:第一个参数是欲创建的目录文件路径,第二个参数是创建目录的权限。
- fcntl 函数:修改某个文件描述符的特殊属性
70.创建硬链接的系统调用:link()
71.接受消息队列的函数 msgrcv()
72.自己退出线程的函数:pthread_exit();被取消线程运行:pthread_cancle()
73.互斥锁、条件变量、读写锁的初始化:
互斥锁的初始化:pthread_mutex_init()
条件变量的初始化:pthread_cond_init()
读写锁的初始化:pthread_rwlock_init()
74.读写锁:非阻塞的加锁解锁和阻塞的加锁解锁。
堵塞的方式申请读锁:pthread_rwlock_rdlock()
非堵塞的方式申请读锁:pthread_rwlock_tryrdlock()
堵塞方式申请写锁:pthread_rwlock_wrlock()
非堵塞方式申请写锁:pthread_rwlock_trywrlock()
75.互斥锁的上锁函数是 pthread_mutex_lock(),非阻塞加 try; 解锁函数是 pthread_mutex_unlock()。
76.面向连接的编程:TCP;面向无连接的是:UDP
77.在不同主机间进行通讯的是:scoket 或者是套接字
78.三次握手:连接建立、数据传输、连接释放。
79.创建套接字的函数 scoket()
80.网络编程的常见函数:
监听网络函数:listen()
发起连接函数:connect()
接受连接函数:accept()
读写 scoket 对象:read()/write()
TCP 发送和接受数据:send()/recv()
关闭 scoket 对象:close()