一、 选择题(40分)
1. 如果键盘输入为abcdef,程序如下所示,打印结果应该是(  C)
  char  buffer[6];
  ……
  fgets(buffer, 6, stdin);
  printf(%s, buffer);
  [A]  abcde      [B] abcdef    [C] abcdef 后出现乱码    [D]  段错误
2. fread()返回值的含义是 ( B )
[A] 读取的字节数    [B] 读取的对象数    [C] 缓冲区的首地址  [D] 随机数
3. 如果umask的值为022,创建文件时指定的权限是775,则该文件的实际权限为 ( A )
用open( )创建新文件时,若该文件存在则可以返回错误信息的参数是 (B  )
[A] O_CREAT    [B] O_EXCL      [C] O_TRUNC      [D] O_NOCTTY
5. 下列哪个函数不会改变文件读写位置( D )
    [A] fread      [B] fwrite    [C] rewind    [D]  ftell
6. lseek()操作成功时返回值的含义是 ( B )
    [A] 新的文件位移量            [B] 文件位置指针移动的字节数 
    [C] 原先的文件位移量          [D]  总是0
7. 如果要删除一个文件需要哪种权限 ( A )
    [A] 对文件具有写权限          [B] 对文件具有可执行的权限 
[C] 对目录具有写权限          [D] 对目录具有可执行的权限
8. 下列不是用户进程的组成部分的是(  D )
[A] 正文段      [B] 用户数据段      [C] 系统数据段        [D]  elf段
9.  以下哪种不是进程的类型 ( B )
  [A]  批处理进程      [B] 管理进程    [C] 交互进程      [D]  守护进程
10. 以下哪种方法无法查看进程的信息 ( C )
  [A] ps        [B] 查看/proc目录        [C] kill          [D] top
11. 可以改变正在运行的进程优先级的命令是(  A)
  [A] nice      [B] renice     [C] kill      [D]  set 
Kill -9 进程
12. 以下哪种用法可以等待接收进程号为pid的子进程的退出状态 ( A  )
[A]  waitpid(pid, &status, 0)        [B] waitpid(pid, &status, WNOHANG)
[C]  waitpid(-1, &status, 0)         [D] waitpid(-1, &status, WNOHANG)
0:同wait ,代表阻塞父进程,直到指定的子进程退出
WNOHANG:指定的子进程没有结束,则waitpid不阻塞立即返回。
13. 函数waitpid的返回值等于0时表示的含义是 (  B)
  [A] 等待的子进程退出    [B] 使用选项WNOHANG且没有子进程退出
  [C] 调用出错            [D] 不确定
14. 下列对无名管道描述错误的是 (C  )
  [A] 半双工的通信模式       
[B] 有固定的读端和写端
[C] 可以使用lseek函数
[D] 只存在于内存中 
15. 下列对于有名管道描述错误的是 ( D )
[A] 可以用于互不相关的进程间   
[B] 通过路径名来打开有名管道
[C] 在文件系统中可见
[D] 管道内容保存在磁盘上 x 内核空间中
16. 下列不属于用户进程对信号的响应方式的是 ( B )
[A] 忽略信号      [B] 保存信号      [C] 捕捉信号      [D] 按缺省方式处理
17. 不能被用户进程屏蔽的信号是 (  B) SIGSTOP和SIGKILL
    [A] SIGINT        [B] SIGSTOP        [C] SIGQUIT        [D] SIGILL
   
18. 默认情况下,不会终止进程的信号是 ( D )书p87
    [A] SIGINT        [B] SIGKILL        [C] SIGALRM        [D]  SIGCHLD
19 下列不属于IPC对象的是 ( A )
   
    [A] 管道        [B] 共享内存      [C] 消息队列        [D]  信号灯
20. 下列哪种机制只能用于线程之间的同步 ( D )
    [A]  信号                    [B]  IPC信号灯 
    [C]  POSIX有名信号量        [D]  POSIX无名信号量
二、 判断题(15分)
1. open()可以用于创建普通文件和设备文件 ( F )
2. lseek()并不引起IO操作 ( T )
3. fgetc()的返回值是char型  F
4. 文件描述符是系统随机分配的非负整数 ( F )
5. 某些库函数的实现不需要系统调用 ( T )
6. Linux下进程的模式分为用户态,内核态和系统态 ( F )
7. 每个进程的进程号和父进程号在进程执行期间不会改变 ( F )
fopen和open区别8. 子进程被创建后从fork()的下一条语句开始执行 ( T )
9. 执行_exit()函数时不会清理IO缓冲 ( T )
10. exec函数族可以创建一个新的进程来执行指定的程序 ( F )
11. wait函数无法接收子进程退出的状态 ( F )
12. 无名管道只能用于父子进程 ( T )
13. 可以用signal()向指定的进程发信号 ( F )
14. 消息队列可以按照消息类型读取消息 ( T )
15. 共享内存是一种最为高效的进程间通信方式 ( T )
三、 简答题(25分)
1. 文件IO和标准IO有什么区别(5分)
   
文件IO : 低级IO,没有缓冲机制。操作的对象是文件描述符  标准IO : 高级IO,有缓冲机制,标准C库中实现。操作的对象是流
   
   
   
   
2. 如何判断一个文本文件包含多少行(写出代码, 5分)
#include<>
#include<>
#include<sys/>
int main(int argc, const char *argv[])
{
    FILE *fp = fopen(argv[1], "r");
    if (fp == NULL)
    {
        perror("fopen");
        return 0;
    }
   
    int line = 0;
    char buff[1024];
    while(1)
    {
        if(fgets(buff, sizeof(buff), fp) != NULL )
        {
            if(buff[strlen(buff)-1] == '\n')
            {
                line++;
            }
        }
        if (feof(fp))
        {
            break;
        }
    }
    printf("line=%d\n", line);
    return 0;
}
   
3. 请描述进程和程序的区别 (4分)
  程序是静态的,它是一些保存在磁盘上的指令的有序集合,没有任何执行的概念  进程是一个动态的概念,它是程序执行的过程,包括创建、调度和消亡  进程是一个独立的可调度的
任务  进程是一个抽象实体。当系统在执行某个程序时,分配和释放的各种资源 进程是一个程序的一次执行的过程  进程是程序执行和资源管理的最小单位

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