http://www.52explore.com/linux-programming/introduction.html