Linux上使用程序相对路径访问文件

今天一个朋友问我这个问题,说为什么在Windows上跑得很好的应用程序,移植到Linux上后就读不到跟应用程序在同一文件夹下的文件呢,我说,这是Linux和Windows在Work directory上设置的不同。 大家都知道,对于Windows而言,应用程序的默认工作目录就是应用程序所在的目录,它一般是不管应用程序是从哪个目录上下文启动的。那么在不更改工作目录的情况下,读文件使用相对目录就肯定是相于应用程序所在的目录。 但对于Linux而言,应用程序的默认工作目录就不同了,它是默认是继承启动它的进程的工作目录的,也就是说,如果进程是在其它目录下启动,那应用程序的工作目录默认就在其它的目录下。这样的话使用相对路径访问文件就有很大的不确定性:我们永远也不能保证,用户一定是从应用程序所在的目录启动! 那要怎么解决呢,我给的建议是,在程序启动后,修改应用程序的当前目录到应用程序所在的目录,然后其它所有程序都无须改动。最好的办法当然只有一个,那就是通过main函数传入的argv[0]计算出当前目录。 下面的例子是读取跟应用程序所在同一目录的a.txt文件并显示,程序启动后修改当前工作目录为应用程序所在的目录,所以不管应用程序从哪个目录启动,程序都能正确地读到a.txt这个文件。

linux kernel hackers manpages 编译

想要成为Linux内核的Hacker, 老是看源代码和头文件还是不够的,实践是很重要的不可缺少的环节,一定还要多自已动手写内核驱动才行。写驱动没有manpage光翻头文件那是不可能的事,所以,一定要自己编译manpages出来才行。 首先到kernel.org上去下载源代码 然后安装xmlto,因为编译manpage的时候需要安装xmlto。 然后到源代码目录下执行如下命令: 内核manpages安装后会放到man section 9里面。

linux下创建可引导的iso文件

最近在为自己公司开发的产品做iso光盘,打算把我们的网络监控产品跟linux系统集成到一起安装,所以就把别人发布的iso解压出来修改光盘里的配置和initrd后,又把它做回iso了。 linux就是好,做iso的软件也是免费的,linux下的mkisofs程序可以制作iso文件和解压iso文件。把我做ISO的时候参考的内容直接引用过来,希望对大家有帮助 🙂 Creating bootable ISO : Linux, Solaris, Windows Whenever you’re automating OS deployments, you will at one point require to build a custom ISO, with your own kickstart, jumpstart or an OEM folder with apps and instructions to boot. Here are three mkisofs commands that you can use for each OS, and to […]

Monitoring Windows Systems from Linux

最近看到一篇国外友人写的关于windows系统监控的文章,作者阐述了多种Linux监控windows的机制。 我在现在的公司也主要负责网络监控系统的产品研发,对作者的观点很赞同。文章也给了我很多帮助。但是作为整个网络系统的监控来说,用户往往不希望在所有被监控主机上安装具有网络安全隐患的监听进程,这点,是我们作为网络监控产品研发人员需要致力去解决的问题。 我在我已经做好的监控系统里用到的监控技术,下面这篇文章都有提到,包括RRD,WMIC,NRPE,SNMP等等,不过,上面我提过,从提高用户信任度来看,扩展snmp是最好的办法,因为它在网络上只使用snmp,其它监控数据均可使用snmp扩展的方式在远程机上执行相关程序/库/脚本。WMI/SSH方式也是比较好的方法。 Thanks to Eric A. Hall for the nice article.下面是Eric A.Hall的原文:

Linux下解压Mac OS的PKG文件

今天又看到了自己以前解压pkg时写的shell脚本,觉得还是挺有用的,记下来免得自己忘了。呵呵 需要用到的相关软件包,包括xtar和gzip。可以用下面的命令从网络上下载: 首先用xtar解压pkg文件,解压后的文件使用gz压缩,这时需要gz解开,最后得到的数据档案包就是能被cpio所接受的档案包。解压命令如下: 先用xtar解压pkg文件,把生成的文件改成gz后缀的文件名,再用gunzip解压,解压后的输出文件输入给cpio提取所有文件。

腾讯跟360高潮了

这一周最引人注目的就是腾讯跟360的战争了,腾讯,会上网的基本上都知道,国内最大的IM服务商,被网友戏称为国内最大的山寨。360,国内很出色的免费杀毒软件,深受广大用户喜爱。用户比例应该是8亿比3亿。 而昨天,腾讯做出了一个“艰难的决定”,就是如果电脑里装了360的,QQ将不会启动。这是非常狠的一招,因为现在的网民,99.9%以上的人开机的第一件事就是登QQ,跟好友聊聊天,要是开机后不能开QQ了,那会让人感到多么的空虚啊!所以腾讯这个决定,完全就是要强制用户去卸载360.这一招引起了很多网友的反感,我有很多朋友都说自己偏要用360,呵呵。 我是一个Linux用户,主系统跑的是Linux,本身不需要360,而虚拟机上的windows也完全是不需要360的,所以本身对我没影响。但是不谈对与错,因为对错都是相对的,我其实是很佩服360的,为了追求自己的真理,哪怕是对手比自己强多少倍,也要走下去!腾讯太强大,360可能会吃亏,我扎希望的是最后的结局就是最后两个还是能共存,让用户自己去选自己喜爱的软件。 但最近乐开花的,真要算MSN了,我的MSN最近是每天都要多增加好几个好友呢,以前都是几个月都会不加一个好友的。微软乐啊,怎么最近中国用户剧烈增加了,哈哈。我一开始就觉得,微软不会进来搅和,但没想到QQ的这个决定会间接地让微软占了大便宜,没想到啊,没想到啊。。。。

iphone用了几天的感受

现在iphone大家用得这么火热,我也受不了了,搞一台来玩玩吧,然后,一不注意就有了一台。 我一开始是想玩玩iphone的系统,传说中的Mac OS,一用就发觉得它跟linux太像了,不止文件系统的组织,就连命令都跟linux的一模一样。。当时还在想,难道这传说中的“Unix like”系统都这个样?后来才知道,原来mac os 就是基于Free BSD的,果然是个Unix like 系统。