一、填空题
1.进程的属性保存在一个被称为 的结构体中,这个结构体包括 、进程组、进程环境、进程的运行状态等。
2.进程在内存中可能会出现不同的状态,通常进程的状态被划分为5种:初始态、
、 、 和终止态。
3.Linux系统中的进程结构类似树形结构,使用 命令可以查看当前系统中的进程树。进程树的顶端是进程 ,它是系统启动后创建的第一个进程。
4.调用fork()函数成功创建子进程后,父进程中的fork()函数会返回_______了进程中的fork()函数会返回 。
5.若在程序中通过如下所示的循环创建进程,循环结束后,会创建 个子进程。
for(int 1=0;i<5;i++)
{
pid= fork();
}
二、判断题
1.进程是程序的一次执行过程。( )
2.exec函数族的功能是:根据指定的文件名或路径找到可执行文件,用该文件取代调用该函数的进程中的程序,再从该文件的main()函数开始执行文件的内容。( )
3.解决僵尸进程的方法是终止其父进程,使其变为孤儿进程。( )
4.fork()函数执行后。系统会立刻为子进程复制一份父进程的资源。( )
5.进程同步机制中的waitpid( )兩数和wait ( )函数用于使父进程阻塞等待子进程终止,将子进程进行回收,因此当父进程中调用了这两个函数时,就不会再有僵尸进程产生。( )
三、单选题
1.在程序中调用fork()函数创建进程,父子进程会获取不同的返回值。下面关于fork()函数的说法错误的是: ( )
A.若子进程创建成功,父进程的fork()返回子进程pid,子进程的fork()返回0
B.若子进程创建成功,子进程的fork()返回子进程pid,父进程的fork()返回0
C.若子进程创建失败,父进程的fork(函数返回-1
D.若子进程创建成功,子进程将从fork()函数调用处之后的代码开始执行
2.下列哪种方法无法查看进程的信息? ( )
A. ps B. top C.kill D.查看/proc目录
3.下列哪种方法可以等待接收进程号为pid 的子进程的退出状态? ( )
A.waitpid(pid, &status,0)
B.waitpid(pid, &status,WNOHANG)
C.waitpid(-1, &status,0)
D.waitpid(-1,$status, WNOHANG)
4. 从后台启动进 强,应在命令后移加思个符号? ()
A. & B. # C. * D.~
四、简答题
1.简单说明程序和进程的区别。
2.分析程序,写出程序的执行结果。
#include <stdio.h>
#include <gtdlib.h>
#include <sys/wait.h>
#include <un1std.h>
int main()
{
pid_ t pid1,pid2;
if((pid1= fork0)==0)
{
sleep(3);
printf("child process_ 1\n");
exit(0);
printf("child process_ 1\n");
}
else
{
if ((pid2= fork())==0)
sleep(1);
printf("child process _2\n");
return 0;
}
else
{
wait (NULL);
walt (NULL);
printf ("info1 from parent process\n"):
printf("info2 from parent process\n”);
relurn 0;
}
}
return 0;
}
五、编程题
1.编写程序,在程序中创建一一个子进程,使父子进程分别打印不同的内容。
2.编写程序,在程序中创建一个子选程,使子进程通过exeu更改代码段,执行cat命令。