易截截图软件、单文件、免安装、纯绿色、仅160KB

Windows程序员如何转向Linux开发应用?

Windows程序员如何转向Linux开发应用?
这是一封发到邮箱里面的邮件,感觉有点代表性,这里做个统一回答,一家之言哈,欢迎拍砖。
原文如下:
我从csdn学习大本营得到您的信息。不好意思打搅您。
我现在用c++在linux下开发大型应用程序。我想请教是否值得深入学习linux kernel。
我没有特别多的时间。另外我有多年Windows下开发应用程序的经验。
 
我的回答:
呵呵,我感觉这还是一个学习方向的问题。
Linux这几年,发展越来越好了,至少在很多应用服务器市场,Linux已经取代Windows成为第一选择,另外,在嵌入式环境,Linux也是逐渐成为主流。这导致很多原本是Windows的程序员,由于工作需要,逐渐走向Linux开发,这中间当然涉及到一个学习的问题。我本人也算其中一份子吧。
我本来一直做Windows开发,在这之前,在DOS下用过gcc开发,还翻译了djgpp的库函数手册,也算有点基础。不过,在07年公司安排我在Linux下正式开发商用服务器的时候,我心里还是很打鼓的。因为也面临着一个学习的问题。
看看市场上的书籍,很乱,我当时花了一整天在汉唐书城,仔细分析Linux开发相关的书籍,我发现分几种,首先是shell编程,这个我看了有半个小时,就觉得没用,这貌似给网管员用的,我做传输服务器用不到,连带着,正则表达式,我觉得对我用处也不大。真的要做复杂条件筛选,我的习惯是写个词法分析程序,自己来分析,也花不了多少时间,所以,我一直就没学正则表达式,呵呵。
然后是C和C++编程相关,我仔细看了,发现一说到开发,就讲到Linux kernel,这部分显然是操作系统的知识,我仔细想了想,发现自己的问题并没有得到解决。就算我知道了kernel怎么工作,里面有什么开发技巧,对我的工作并没有什么帮助。
我当时做的是分布式数据库的传输服务器部分,这部分讲究多线程,高效能,但还是局限在应用层,并没有多少涉及到kernel的东东。我觉得用处不大。
反而我觉得我有必要对socket编程重新补一补了。经过挑选,我给自己选了一本《UNIX网络编程》的第1卷网络通信篇,第2卷是进程间通讯,我觉得我的程序用多线程跑已经很好了,线程本身就是共享内存的,无需考虑太多异步通讯,而且,我的习惯,进程间通讯,一般直接使用socket,这个放之四海皆真理,而且,好处是我的进程可以跨机器随意部署,只要我提供IP地址,进程间就可以互相通信,协同工作。所以,我只买了第1卷,就是专门讲socket的,这是好书,我现在没事还要拿出来看一看。
另外,�


相关文档:

Linux C 参考手册 之 环境变量篇

getenv(取得环境变量内容)
相关函数 putenv,setenv,unsetenv
表头文件 #include<stdlib.h>
定义函数 char * getenv(const char *name);
函数说明 getenv()用来取得参数name环境变量的内容。参数name为环境变量的名称,如果该变量存在则会返回指向该内容的指针。环境变量的格式为name=value。
返回值 执行� ......

Linux定时器——setitimer()

setitimer()是比较精准的定时器,是Linux的API
以下代码是个倒计时例子:
#include <signal.h>
#include <sys/time.h>
static int time_count=30;
static void sigalrm_handler(int sig)
{
time_count--;
printf("timer signal.. %d\n", time_count);
}
struct itimerval v; ......

Linux驱动的配置和编译脚本

  在完成了驱动程序代码的编写之后,接下来的任务就是编译。linux内核编译的过程是通过内核源码的根目录和各子目录中的Makefile分级管理的。其中根目录的Makefile是最重要的,它可以看成是其他Makefile最初的入口。它负责定义所有与体系结构无关的变量和目标,读取.config文件,并根据其信息最终生成vmlinux(elf格式的 ......

Linux驱动的配置和编译脚本

  在完成了驱动程序代码的编写之后,接下来的任务就是编译。linux内核编译的过程是通过内核源码的根目录和各子目录中的Makefile分级管理的。其中根目录的Makefile是最重要的,它可以看成是其他Makefile最初的入口。它负责定义所有与体系结构无关的变量和目标,读取.config文件,并根据其信息最终生成vmlinux(elf格式的 ......

linux 中的hook

相信熟悉windows编程的高手们都知道,windows为我们提供一些api,这些api用于hook 键盘,鼠标,消息等事件。windows的运行是来源于这些事件驱动的,所以一旦我们截获了这些事件,就可以篡改程序本来的功能了。
但是在Linux中,并不存在这样的api。要抓获内核中的input事件,就必须另外编辑驱动进行额外的处理。
这是以前� ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号