拳不离手、曲不离口 - Speak with your code, my friend, not your word.

[UNIX.API]一个c程序在Unix系统中是如何启动和终止的?

一个c程序的入口函数总是main函数,用户在用户空间执行这个c程序后,将会引起系统调用,kernel调用exec函数,将具体main函数的某些信息作为参数传给exec,由exec函数启动这个main函数,main函数执行完后,如果单线程,则有两种方式终止,(1)调用exit函数(return)。(2)调用 _exit(POSIX)函数或者_Exit函数(ISO C)。两者的区别在于,2只是直接返回kernel,而1会做一些清理工作。1的清理工作主要包括三部分,(a)调用exit handler;(b)调用fclose等函数关闭与I/O库的联系;(c)调用_exit或者_Exit函数。其中的exit handler需要用户自己定义并在退出函数之前用atexit函数注册,然后在exit函数(return)中被自动执行,执行顺序与注册顺序相反。

[文件管理]Almost everything in Unix can be treated as a file.

Qouted from LDD3 page 4.

[设备驱动]linux下各种设备的驱动,共性和个性并存。

...

Each driver is different; as a driver writer, you need to understand your specific device well. But most of the principles and basic techniques are the same for all drivers.

...

--- Quoted from LDD3 page 1

说一说自己对编程的理解。

编程看起来是个很大的东西,有底层编程和API编程,有桌面软件编程和web编程等等。涉及到的东西太多了,光语言就有很多种,语言里面还分低级语言,高级语言,标记语言等,让人感觉很复杂。

但是我觉得从程序员的角度来看,所有的编程,都可以这样看:

编程就像一个军团,程序员就是这个军团的最高指挥官,代码就是下达出去的命令,各种软硬件都是下面的官官兵兵,cpu是级别最低的大兵,存储就是粮仓,寄存器或者cache可以看成是大兵的口袋,数据就是粮草,总线就是军事交通大动脉。

只不过下面的官官兵兵是多国部队,所以命令需要用不同语言,比如cpu就是机器国的,只懂机器语言;浏览器呢?大多会几国语言,什么HTML,XML,asp,javascript,flash等等。另外不同的官官兵兵也有不同的脾气,你要他们打得漂亮,你需要对给不同人的命令进行不同的优化,另外,打仗本来就是有策略的,策略就体现在算法上。

呵呵,这是我的一点理解,不妥之处,权当娱乐吧。

大家好,我是clem,这地方还不错,呵呵。

我是一个linux程序员,和linux有关的都可以找我讨论,学无止境阿。。。