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]);
}

getenvputenv 可以查询/修改特定环境变量。

Author: expye(Zihao Ye)

Email: expye@outlook.com

Date: 2020-07-02

Last modified: 2020-07-30 Thu 01:44

Licensed under CC BY-NC 4.0