如何学习linux下的c/c++编程
我计划的学习历程:
1. c和c++的基础知识,这个和操作系统无关,在windows上也可以学。c语言语法相对简单一点,c++不需要把所有的知识点都学会,要知道基本的封装,继承,多态之类的,还有STL。更深入的学习应该是在以后的工作中遇到问题了再去查资料。
2. 看书《APUE》,做书上的习题,掌握文件,系统调用,线程、进程、网络编程等基本知识(多是c实现的),加深对语言和系统的了解。这个阶段实际上就是熟悉linux系统的API的过程了。使用的编程工具组合:VI/EMACS/GCC/GDB。虽然有可视化的工具CodeBlocks和Eclipse,但是对初学者没有必要使用。
3. 寻找一些别人写的优秀的代码来研究。可以到各大论坛的精华区,或者sf上面寻找一些小的开源工程研究下。比如一个简单的socket聊天程序,或者多线程程序。
4. 这个过程与3是同步进行的,开始自己动手尝试编写实际有用的程序。比如一个聊天程序,一个FTP客户端,或者一个Email收发程序,图片演示程序,小游戏,数据表单软件等等。
5. 选择感兴趣的地方钻研。linux下涉及的东西很多,比如多线程,网络,linux内核等。
6. 其他。c/c++只是一门语言,学linux不应该局限于此,象shell脚本,Python,Perl都是值得去学习。
相关文档:
一:前言
最近在研究android的sensor driver,主要是E-compass,其中用到了Linux input子系统.在网上也看了很多这方面的资料,感觉还是这篇分析的比较细致透彻,因此转载一下以便自己学习,同时和大家分享!
(这篇博客主要是以键盘驱动为例的,不过讲解的是Linux Input Subsystem,可以仔细的研究一下!)
键盘驱动将检 ......
New things to learn about Linux Scheduler):
1. Rotating Staircase Deadline cpu scheduler policy
2. CFS (Completely Fair Scheduler)
3. BFS (Brain Fuck Scheduler)
http://lwn.net/Articles/
http://kerneltrap.org/
......
一、什么是init
init是Linux系统操作中不可缺少的程序之一。 是一个由内核启动的用户级进程。
内核启动(已经被载入内存,开始运行,并已初始化所有的设备驱动程序和数据结构等)之后,就通过启动一个用户级程序init的方式来启动其他用户级的进程或服务。所以,init始终是第一个进程(其PID始终为1)。
内核 ......
/* 包含C头文件 */
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
/* 包含SQLCA头文件 */
EXEC SQL INCLUDE sqlca;
EXEC SQL INCLUDE sqlda;
int main()
{
EXEC SQL BEGIN DECLARE SECTION;
int money;
......
在ANSI C中,对文件的操作分为两种方式,即流式文件操作和I/O文件操作,下面就分别介绍之。
一、流式文件操作
这种方式的文件操作有一个重要的结构FILE,FILE在stdio.h中定义如下:
typedef struct {
int level; /* fill/empty level of buffer */
unsigned flags; /* File status flags */
char fd; /* File des ......