UNIX系统编程1

转自http://bbs.chinaunix.net/viewthread.php?tid=851919&extra=page%3D2%26amp%3Bfilter%3Ddigest

 

前言:
前一阵子在网上闲逛,偶然发现了CU这个地方感觉还不错。所以就注册了个ID有事没事来这里看看。慢慢发现这里编程高手云集,但同时也有一些刚学习了一些C,UNIX编程入门级选手。我想起我上大学学习UNIX系统编程时有过一本笔记,我花了两天时间从我书箱里的最下面把它给翻了出来。决定把这本“出土文物”拿出来进行一下“保护性修补”,然后贴出来,如果能给UNIX编程的初学者带来一些帮助的话,也就算这本给这本笔记找到了新的利用价值,反正总比压箱底强吧。
说道UNIX编程的入门书籍,凡是学过的应该很少有人不知道W.Richard Stevens的那本《UNIX环境高级编程》的吧。就像中国学习C语言的人80%以上都知道谭浩强教授一样。W.Richard Steven是国际著名的计算机专家,计算机图书作家。他所写的网络协议和UNIX编程等几部书部部都堪称圣经级读本。可惜的是他英年早逝,实是令人惋惜呀。说远了,我想说的是W.Richard Stevens的那本《UNIX环境高级编程》虽然好,但内容体系对一个刚刚起步的人来说也过于庞大,即使你看它一两百页也很难对UNIX编程有一个整体把握,我的帖子不追求面面俱到,希望能用最简洁的篇幅来让初学者对UNIX编程的主要内容有一个大体的把握,方便以后进阶学习。甚至不用刻意通读那本《UNIX环境高级编程》,用到什么地方在仔细读某一章节,边用边学效果会更好一些,我就是这么干的。呵呵,似乎有点老王卖瓜的意思,嘻嘻。
        最后介绍一下我认为不错的学习工具,一是刚才说的那本《UNIX环境高级编程》,还有一本Kay A.Robbins, Steve Robbins的《UNIX系统编程》,里面例题较多,容易理解。在有就是man命令了,一套庞大的,快速的,免费的,权威的,方便的在线帮助系统。你有什么不会的就输入

  1. $man 你想查询的内容


如果man你也不会用也不要紧,那你就

  1. $man man

一下,呵呵。只可惜好像还没有翻译成中文,对于像我这样英文水平还有待提高的朋友来说读起来有点麻烦。最后还有一个好工具就是网络,有什么不会的google一下好多问题都能解决。
好,啰嗦的半天,说归正传,免得给大家造成光说不练的印象。

    第一章:什么是系统编程
        UNIX系统编程,简单的说就是“C语言+系统调用(system call)”,学会了C语言再知道一些系统调用的方法,其实就可以进行UNIX系统编程了。那什么又是系统调用呢,其实初学者就把它看当成是函数用就可以了。这些“函数”是干什么用的呢,大家知道操作系统内核管理着我们的计算机资源,比如CPU内存硬盘等等。应用程序是无法直接访问到它们的。那我们想利用这些资源怎么办呢,内核就给我们提供了一个接口,我们可以利用这个接口来进行计算机资源的使用。内核也通过接口来判断我们的使用请求是否合法,合法的的提供资源,不合法的给与干掉。就好比是金库,银行和储户。金库里有要多地人民币,这就是资源。然而我们储户却无法直接接触到这些可爱的人民币,因为它们是通过银行来管理的,银行就好比是内核。但我们怎么样才能从金库里取出钱来呢,我们可以去银行窗口办理存款取款手续,这就是系统调用。当然,每个人的取款限额都不一样,大款的存款多,他可以取几百万甚至更多,而我存款少,取出一万块就已经不错了。这就是用户的系统调用权限不同。还有就是银行行长,他对这个金库的权限更大(root),当然他的责任也更大,他的一个错误决定有可能导致银行破产。这事可就大了。还有一种情况,一个在银行里没有什么存款的人,却通过一些技术手段,得到了一个大款的密码甚至是伪装成银行行长,把金库里的钱全提走了,这就是黑客。想想这种感觉你就知道为什么世界上有这么多黑客乐此不疲了。还有一些人没有什么“技术含量”直接“抢银行”,把你的计算机都抱走了。那你只有哭了,金库里的钱丢了,好在“房子”还在呀,这回连“房子”也丢了。依照这个比喻,那木马是什么呢?对,就是你的银行职员里出了内奸了。哈哈。好了不胡扯了,我了这么多例子就是想告诉大家,银行(内核)本身来说还是十分坚固稳定的,问题出在如何通过窗口(系统调用)安全地使用它。这也是学习UNIX系统编程是应该注意的问题。从下一个帖子开始说说说进程(process)和如何生成一个进程。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值