可以看到父子进程的运行是没有特定的先后顺序的,而由于wait函数父进程要等待子进程结束才能结束,否则子进程可能成为僵尸进程 示例三: 运行结果如下 通过了这个程序,明白了linux如何通过注册信号句柄来实现信号机制 先通过signal函数注册句柄,但是此时句柄函数不会运行,知道本进程接收到了在signal中指定的信号才会执行该句柄函数 在本例中的信号是外部键盘中断,也就是Ctrl + C 示例四: 第 11 页 共 15 页
这个示例程序也是说明linux的信号机制的运作方式的, 本程序通过调用fork函数,创建出一个子进程,随后在父进程中注册了一个接受SIGUSR1信号的函数,usr1_handler,接着休眠,直到接受到信号 然后在子进程中使用kill函数向父进程发送一个SIGUSR1信号,唤醒父进程 随后父进程醒来,并因为wait函数等待子进程结束 运行结果如下 示例五: 第 12 页 共 15 页
本示例通过函数pthread_create()函数创建了一个线程,这个函数节后一个pthread_t的线程号类型,以及函数名作为参数,执行完该函数后myThread函数就作为一个新的线程开始执行了,但是要注意,线程的开始要有一段时间,而不是立即结束,所以如果进程中没有用join或者sleep一段时间的话,可能会看不到线程的开始
实验编号 4 题目 同步与互斥 为Linux内核增加一个系统调用,并编写用户进程的程序来测试。 要求该系统调用能够完成以下功能: 1. 该系统调用有1个int型参数,返回值为int。 实验2. 若参数大于0,则返回自己学号的最后一位。如学号为13091434,目的 则返回4。 3. 若参数小于或等于0,则返回自己的学号后三位。如学号为13091434,则返回434。 1、 系统调用的实现 实验2、 增加系统调用 内容 3、 Linux内核的构建 第 13 页 共 15 页
报告(1) 实现方法和思路 内容(2) 测试及结果 要求 报 告 正 文
实验编号 5 题目 文件系统 为Linux内核增加一个系统调用,并编写用户进程的程序来测试。 要求该系统调用能够完成以下功能: 1. 该系统调用有1个int型参数,返回值为int。 实验2. 若参数大于0,则返回自己学号的最后一位。如学号为13091434,目的 则返回4。 3. 若参数小于或等于0,则返回自己的学号后三位。如学号为13091434,则返回434。 4、 系统调用的实现 实验5、 增加系统调用 内容 6、 Linux内核的构建 报告(1) 实现方法和思路 内容(2) 测试及结果 要求 报 告 正 文 第 14 页 共 15 页
第 15 页 共 15 页