|
初来乍到

注册用户 - 帖子
- 3
- 精华
- 0
- 积分
- 4
- 在线时间
- 0 小时
|
楼主贴
大 中
小 发表于 2006-6-10 21:29 只看该作者
帮帮
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("ENV ATH=%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系统提供有长跳转机制,来解决此问题,试描述这种机制的工作原理。
22、UNIX/Linux系统中用于,创建(派生)进程或招待程序的方法有三:_________、________和__________。试分别描述它们的工作机制,并?*鏊?堑牟煌??lt;/font>
23、设计当前shell的进程ID为12000,下面程序经编译后生成的程序为a.out,它执行时的进程ID为12345,它创建的子进程的ID为12400。试写出它的执行结果。
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、在操作系统的中,很多信号是由系统或外界发出的,但进程间也可以通过主动发送信号的办法实现进程间的通信。具体实现方法是由kill或raise向某个进程或进程组发送信号,而信号的接收者在收到信号后,可由signal规定收到信号后所采取的动作。试描述UNIX/Linux系统的信号通信机制与实现办法。
28、试描述利用UNIX Socket库编写C/S模式网络程序的柜架。
|