Advanced Programming in Unix Environment
Table of Contents
XV6 设计手册
XV6 是 MIT 的操作系统课程中使用的教学系统,包含一个比较完整且轻量的操作系统原型。
Chap 7. Process Environment
在内核中,执行一个程序需要调用 exec
函数,而自愿退出必须显式调用 _exit
或者 _Exit
,信号可以终止一个进程。
- 进程终止
按照 ISO 1999 的标准,main 函数声明为整型时且没有显式返回值时,返回 0。如果没有声明为整型且未制定终止状态,则终止状态未定义。
#include <stdio.h> main() { printf("hello world!\n"); }
编译执行后:
$ gcc hello.c -ansi $ ./a.out $ hello world $ echo $? 13
ansi
表示使用 C90 标准,在 C99 之后返回类型会被默认为 int
。
atexit
可以注册一组函数,表明当前进程在退出时的行为。
- 环境表
环境表储存环境变量,可以用一个全局变量 environ
来访问。
#include <stdio.h> extern char **environ; int main() { printf("%s\n", environ[0]); }
getenv
和 putenv
可以查询/修改特定环境变量。