发新话题
打印

帮帮

帮帮

20、阅读下列程序,并?*觯??墓δ堋?lt;/font>

#include <stdlib.h>

main(int argc, char *argv[ ], char *envp[ ]){

int i;

for(i=0; envp!=NULL; i++)

printf("Var_env[%d]: %s\n", i, envp);

printf("ENVATH=%s\n", getenv("ATH"));

printf(" ENV:HMOE=%s\n", getenv("HOME"));

}

若程序改为:

#include <stdlib.h>

main(int argc, char *argv[ ], char *envp[ ]){

int i;

for(i=0; I<argc; i++)

printf("ENV:%s=%s\n", argv[I],getenv(argv[I]));

}

试根据程序,说明它的用法,并观察对不同命令行输入时它的输出。

21、在标准的C语言中,是不允许函数间跳转的,但UNIX/Linux系统提供有长跳转机制,来解决此问题,试描述这种机制的工作原理。

22UNIX/Linux系统中用于,创建(派生)进程或招待程序的方法有三:___________________________。试分别描述它们的工作机制,并?*鏊?堑牟煌??lt;/font>

23、设计当前shell的进程ID12000,下面程序经编译后生成的程序为a.out,它执行时的进程ID12345,它创建的子进程的ID12400。试写出它的执行结果。

main()

{

int i;

printf("PID=%d\n",getppid());

while((i=fork())==-1);

printf( "i=%d\n",i);

if(i){

sleep(3);

printf( "arent process!,PPID=%d,PID=%d\n",getppid(),getpid());

}

else

printf( "Child process!, PPID=%d, PID=%d\n",getppid(),getpid());

printf("I am finished!!!\n");

}

24、在UNIX/Linux系统中,若一个进程执行完毕或受外力影响,会结束自己的执行终止。不管进程如何终止,最后都会执行内核中的同一段代码。这段代码为相应进程关闭所有打开描述符,释放它所使用的存储器等等。试描述进程终止的可能情况和终止时的退出码(返回码)。

25、试描述孤儿进程的形成过程和收养过程。

26、什么是僵尸进程(Zombie)?在程序设计是应如何避免僵尸进程的实现?在避免僵尸进程的实施过程中还应注意些什么?

27、在操作系统的中,很多信号是由系统或外界发出的,但进程间也可以通过主动发送信号的办法实现进程间的通信。具体实现方法是由killraise向某个进程或进程组发送信号,而信号的接收者在收到信号后,可由signal规定收到信号后所采取的动作。试描述UNIX/Linux系统的信号通信机制与实现办法。

28、试描述利用UNIX Socket库编写C/S模式网络程序的柜架。
      

TOP

发新话题