Sep
25
比如在路由器上用lighttpd起的端口在80
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
再比如自己开了一个服务端口在9999
iptables -A INPUT -p tcp --dport 9999 -j ACCEPT
tomato默认不开多余的端口……
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
再比如自己开了一个服务端口在9999
iptables -A INPUT -p tcp --dport 9999 -j ACCEPT
tomato默认不开多余的端口……
Sep
7
尊敬的Unix-Center.Net用户:
感谢您注册成为Unix-Center.Net的一员。我们一直在努力为各位注册会员提供更好的Unix/Linux学习与体验环境。此会员通讯的目的就 是向各位介绍我们最近取得的一些新进展,希望能够得到各位更进一步的支持。
自2007年2 月Unix-Center.Net正式开通以来,我们已经不间断运行了三年半的时间。在这里我们需要向中国最大的开发者社区CSDN表示衷心的感谢。 CSDN在本站遇到财务困难的时候为本站支付了2009年4 月到2010年4 月的服务器托管费用,又于2010年4 月免费接纳本站所有服务器迁入CSDN的机房。正是由于CSDN的大力支持,本站才能够在坚持公益性和非盈利性的前提下继续为各位用户提供服务。在过去六 个月中,我们与CSDN一道与数家公司展开讨论,希望能够争取他们对Unix-Center.Net的支持。遗憾的是,大部分公司并不认可本站所坚持的公 益性和非盈利性原则,因此相关讨论并未取得实质性进展。
在过去18个月中,一共有243名用户通过向本站捐赠100元的方式成为本站的标准用户。为了表示我们对这些用户的感谢,我们为其提供了1 G的存储空间,MySQL数据库访问权限,以及基于Apache、MySQL和PHP的Web 应用开发环境。
自从本人离开Sun 公司之后,很多朋友都很关心我的去向和近况。在这里我统一做一个说明。
首先,本人没有离开IT这个行业。我于09年底移居海南后,一直在思考如何利用信息技术来为农村做一点事情。经过接近一年时间的调研,我注意到生产技术低 下或者缺乏生产资料已经不再是阻碍农村发展的第一因素。与此相反,由于生产与销售环节严重脱钩,导致农户在风调雨顺的情况下还要亏本,严重打击了农户的生 产积极性。与此同时,仅仅是几十公里甚至是十几公里之外的城市,农产品价格高居不下,城市居民纷纷抱怨买不起菜吃不起饭。如果抛开农产品购销当中的仓储、 运输等因素,这是一个典型的信息不对称问题。让农户了解市场行情,让商户了解生产情况,虽然不能够彻底解决这个问题,但是能够在一定程度上促使其往正面的 方向发展。因此,我于最近接受海口市科学技术工业信息化局的邀请,与几位志同道合的朋友一起着手组建一家公司来开发与运营一个农产品信息类网站:电子农务 网。
电子农务网上线之后的第一件大事,是面向全国开展一次博客大赛,广泛征集关于农民、农村、农业等领域的信息、观点、评论、建议。目前我们已经争取到了海南 马自达公司提供的两辆海南马自达海福星轿车、金鹿集团提供的拖拉机四台、以及某计算机公司提供的笔记本电脑若干台作为大赛奖品。就我所知,这些年来国内各 种各样的博客大赛层出不穷,能够列出的如此级别奖品的,似乎还没有见过。在这里我郑重邀请各位朋友参与到此次博客大赛中来,为农村的发展出谋划策,说不准 就能够赢得一辆轿车或者是拖拉机开回家。另外如果各位朋友有做媒体的或者是做网站的,欢迎转载相关信息为我们扩大一下影响力,或者是派出记者来挖掘一下这 个事件的新闻价值。
各位可能觉得我们做IT的跟农村没什么关系,其实未必。且不说我们之中相当一部分人原本就来自农村,我们每天所消费的粮食、蔬菜、肉蛋、水果,无一不与农 村息息相关。耕地红线能不能保住,会直接影响农产品的价格,可以说是间接动了我们的钱包。不过这还不是最严重的,要是滥用激素和农药残留的问题管不好,简 直就是直接要我们的老命了。所以我希望各位都过来参加这个博客大赛,写一写记忆不远处的青山绿水,红桃黄橙,稻花的香,水牛的憨,父辈的汗水,还有村头小 妹鲜艳的笑脸。是不是真的能够赢得轿车或者是拖拉机,已经无关紧要了。重要的是,关心农村问题就是关心我们自己的钱包和健康。
广告做的好,不如海马轿车好。在这里给各位提供一下此次博客大赛的链接,很多细节尚在讨论当中,不过已经是呼之欲出了。
http://www.dznw.net/home/space.php?uid=327&do=blog&id=2206
顺便说一声,如果你有淘汰下来的电脑,并且希望让它们有个地方发挥余热,请跟我联系。我能够把它们转送给那些没有电脑,但是又非常希望拥有一台电脑的农 民。如果你愿意的话,麻烦您问一问您身边的人有没有淘汰下来的电脑。或者,您还可以帮我问一问你所在公司的IT部门,是否愿意将公司淘汰下来的电脑赠送给 农民使用。只要是一台还能够运行Windows 2000的电脑,慢一点点没有关系,硬盘小点没有关系,没有显示器也没有关系,我们会设法解决。另外,也欢迎各位淘汰下来的数码相机。
说起农民,你可能觉得他们没文化,觉得他们根本不可能有使用电脑这样的需求。你所不知道的是,有很多农民,他们通过自学知道了如何操作电脑,也学会了如何 通过搜索来掌握最新的供求行情和价格信息,他们当中甚至有人开设了自己的博客。到我的电子农务网去看看,你就能发现,农村的信息化,正在悄悄地改变农村的 面貌。
如果您愿意向农民捐赠您淘汰下来的电脑,请将其发送到如下地址。如果您无力支付其运费,可以使用快递/物流公司的“运费到付\"业务,我们愿意支付由此发生 的快递/物流费用。
海南省海口市琼山区龙昆南路88号禧龙酒店902 室
电子农务运营中心
蒋清野 收
电话:15008959686
邮编:571100
最后,请允许我
感谢您花时间读完这封邮件。如果您认为它不是垃圾邮件的话,我们鼓励您将其转发到您常去的网站和社区。
感谢您对Unix-Center.Net的关心和支持。
感谢您对农村、农民和农业的支持。欢迎您注册成为电子农务网(http://www.dznw.net/home/)的用户,并且将qyjohn加为您的 好友。
蒋清野
Unix-Center.Net
2010年9 月7 日
感谢您注册成为Unix-Center.Net的一员。我们一直在努力为各位注册会员提供更好的Unix/Linux学习与体验环境。此会员通讯的目的就 是向各位介绍我们最近取得的一些新进展,希望能够得到各位更进一步的支持。
自2007年2 月Unix-Center.Net正式开通以来,我们已经不间断运行了三年半的时间。在这里我们需要向中国最大的开发者社区CSDN表示衷心的感谢。 CSDN在本站遇到财务困难的时候为本站支付了2009年4 月到2010年4 月的服务器托管费用,又于2010年4 月免费接纳本站所有服务器迁入CSDN的机房。正是由于CSDN的大力支持,本站才能够在坚持公益性和非盈利性的前提下继续为各位用户提供服务。在过去六 个月中,我们与CSDN一道与数家公司展开讨论,希望能够争取他们对Unix-Center.Net的支持。遗憾的是,大部分公司并不认可本站所坚持的公 益性和非盈利性原则,因此相关讨论并未取得实质性进展。
在过去18个月中,一共有243名用户通过向本站捐赠100元的方式成为本站的标准用户。为了表示我们对这些用户的感谢,我们为其提供了1 G的存储空间,MySQL数据库访问权限,以及基于Apache、MySQL和PHP的Web 应用开发环境。
自从本人离开Sun 公司之后,很多朋友都很关心我的去向和近况。在这里我统一做一个说明。
首先,本人没有离开IT这个行业。我于09年底移居海南后,一直在思考如何利用信息技术来为农村做一点事情。经过接近一年时间的调研,我注意到生产技术低 下或者缺乏生产资料已经不再是阻碍农村发展的第一因素。与此相反,由于生产与销售环节严重脱钩,导致农户在风调雨顺的情况下还要亏本,严重打击了农户的生 产积极性。与此同时,仅仅是几十公里甚至是十几公里之外的城市,农产品价格高居不下,城市居民纷纷抱怨买不起菜吃不起饭。如果抛开农产品购销当中的仓储、 运输等因素,这是一个典型的信息不对称问题。让农户了解市场行情,让商户了解生产情况,虽然不能够彻底解决这个问题,但是能够在一定程度上促使其往正面的 方向发展。因此,我于最近接受海口市科学技术工业信息化局的邀请,与几位志同道合的朋友一起着手组建一家公司来开发与运营一个农产品信息类网站:电子农务 网。
电子农务网上线之后的第一件大事,是面向全国开展一次博客大赛,广泛征集关于农民、农村、农业等领域的信息、观点、评论、建议。目前我们已经争取到了海南 马自达公司提供的两辆海南马自达海福星轿车、金鹿集团提供的拖拉机四台、以及某计算机公司提供的笔记本电脑若干台作为大赛奖品。就我所知,这些年来国内各 种各样的博客大赛层出不穷,能够列出的如此级别奖品的,似乎还没有见过。在这里我郑重邀请各位朋友参与到此次博客大赛中来,为农村的发展出谋划策,说不准 就能够赢得一辆轿车或者是拖拉机开回家。另外如果各位朋友有做媒体的或者是做网站的,欢迎转载相关信息为我们扩大一下影响力,或者是派出记者来挖掘一下这 个事件的新闻价值。
各位可能觉得我们做IT的跟农村没什么关系,其实未必。且不说我们之中相当一部分人原本就来自农村,我们每天所消费的粮食、蔬菜、肉蛋、水果,无一不与农 村息息相关。耕地红线能不能保住,会直接影响农产品的价格,可以说是间接动了我们的钱包。不过这还不是最严重的,要是滥用激素和农药残留的问题管不好,简 直就是直接要我们的老命了。所以我希望各位都过来参加这个博客大赛,写一写记忆不远处的青山绿水,红桃黄橙,稻花的香,水牛的憨,父辈的汗水,还有村头小 妹鲜艳的笑脸。是不是真的能够赢得轿车或者是拖拉机,已经无关紧要了。重要的是,关心农村问题就是关心我们自己的钱包和健康。
广告做的好,不如海马轿车好。在这里给各位提供一下此次博客大赛的链接,很多细节尚在讨论当中,不过已经是呼之欲出了。
http://www.dznw.net/home/space.php?uid=327&do=blog&id=2206
顺便说一声,如果你有淘汰下来的电脑,并且希望让它们有个地方发挥余热,请跟我联系。我能够把它们转送给那些没有电脑,但是又非常希望拥有一台电脑的农 民。如果你愿意的话,麻烦您问一问您身边的人有没有淘汰下来的电脑。或者,您还可以帮我问一问你所在公司的IT部门,是否愿意将公司淘汰下来的电脑赠送给 农民使用。只要是一台还能够运行Windows 2000的电脑,慢一点点没有关系,硬盘小点没有关系,没有显示器也没有关系,我们会设法解决。另外,也欢迎各位淘汰下来的数码相机。
说起农民,你可能觉得他们没文化,觉得他们根本不可能有使用电脑这样的需求。你所不知道的是,有很多农民,他们通过自学知道了如何操作电脑,也学会了如何 通过搜索来掌握最新的供求行情和价格信息,他们当中甚至有人开设了自己的博客。到我的电子农务网去看看,你就能发现,农村的信息化,正在悄悄地改变农村的 面貌。
如果您愿意向农民捐赠您淘汰下来的电脑,请将其发送到如下地址。如果您无力支付其运费,可以使用快递/物流公司的“运费到付\"业务,我们愿意支付由此发生 的快递/物流费用。
海南省海口市琼山区龙昆南路88号禧龙酒店902 室
电子农务运营中心
蒋清野 收
电话:15008959686
邮编:571100
最后,请允许我
感谢您花时间读完这封邮件。如果您认为它不是垃圾邮件的话,我们鼓励您将其转发到您常去的网站和社区。
感谢您对Unix-Center.Net的关心和支持。
感谢您对农村、农民和农业的支持。欢迎您注册成为电子农务网(http://www.dznw.net/home/)的用户,并且将qyjohn加为您的 好友。
蒋清野
Unix-Center.Net
2010年9 月7 日
Aug
30
引用
Warning: Unable to initialize module
Module compiled with module API=20050922, debug=0, thread-safety=1
PHP compiled with module API=20020429, debug=0, thread-safety=1
These options need to match
Module compiled with module API=20050922, debug=0, thread-safety=1
PHP compiled with module API=20020429, debug=0, thread-safety=1
These options need to match
由于在编译的时候API版本信息(API version)会被嵌入到.so文件中,而PHP在载入扩展时会检查扩展中的API Version与当前版本的API Version是否相同。如果不相同,则拒绝载入。
如果出现类似的WARNING,可能的情况有2:
1. 这个 .so 扩展文件是你自己从php源码编译的
2. 这个 .so 扩展文件是从其他地方下载下来的
但是比较囧的是,比如,在Ubuntu上面,安装了php5,php5-dev,默认的 phpize + configure + make 生成的扩展的API Version是与ubuntu源中的php版本相同;如果需要编译另一个版本的PHP扩展(比如godaddy上的5.2.8),就不能这么直接了,解决办法是:
1. 到php.net去下载对应版本的php代码,比如php5.2.8.tar.bz2,解压到 xxx/php
2. 编译php
$ cd xxx/php && ./configure && make
3. 使该版本的phpize、php-config可用
$ cd xxx/php/scripts; chmod +x phpize php-config
4. 编译扩展
$ cd 扩展源代码路径
$ xxx/php/scripts/phpize
$ ./configure --with-php-config=xxx/php/scripts/php-config #注意这个with-php-config参数
$ make
编译好后的.so文件就在 modules 目录下面了
Aug
30
暑假在家的时候被表哥安了个QVOD。虽说不像以前那么流氓,有专门的卸载工具了,但是就像当初的3721,不给你卸载干净,留下一个DLL,方便以后做坏事。具体的表现就是,右键单击RMVB等文件时,总有一个”添加到 快播 列表“。
解决办法还很难搜到,还好还算简单:
1. 打开命令提示符(或者在[开始菜单->运行]里面),运行: regsvr32 /u "C:\Program Files\QvodPlayer\QvodBand.dll"
2. 安装unlocker这个强力删文件工具,然后打开C:\Program Files\QvodPlayer\,右击QvodBand.dll,选择Unlocker,在弹出窗口的下拉菜单中选择”删除“,然后点击全部解锁。
清爽了。
解决办法还很难搜到,还好还算简单:
1. 打开命令提示符(或者在[开始菜单->运行]里面),运行: regsvr32 /u "C:\Program Files\QvodPlayer\QvodBand.dll"
2. 安装unlocker这个强力删文件工具,然后打开C:\Program Files\QvodPlayer\,右击QvodBand.dll,选择Unlocker,在弹出窗口的下拉菜单中选择”删除“,然后点击全部解锁。
清爽了。
Aug
29
百度的i贴吧没有官方的rss实现,挺郁闷的。花了点时间用PHP写了这个。
测试过,GoogleReader可以正常订阅;HTTP/HTTPS兼容。代码挺难看的。
要求:支持curl库的PHP空间。如果不支持curl,可以自己用fsockopen简单模拟一下。
测试过,GoogleReader可以正常订阅;HTTP/HTTPS兼容。代码挺难看的。
要求:支持curl库的PHP空间。如果不支持curl,可以自己用fsockopen简单模拟一下。
下载文件 (已下载 1376 次)
Aug
29
【参考】 http://onlamp.com/pub/a/onlamp/2008/03/04/step-by-step-configuring-ssl-under-apache.html
p.s. 删减部分内容,并修正原文的一些小错误
1. 生成ssl证书:
1) 如果没有安装openssl,sudo apt-get install openssl装一个
2) 生成自签名证书将HOSTNAME替换成需要的域名;更详细说明(各参数/CA签名方法)参见原文。这一步执行完后会有server.crt和server.key两个文件,server.crt是公钥,需要让运行apache的用户可读的;server.key是私钥应当chmod为600。
3). 将server.cst和server.key拷贝到/etc/apache2/ssl/下。这个路径可以更改,但相应的配置文件中的路径也需要更改。
2. 配置apache
1) 启用mod_ssl: $ sudo a2enmod ssl
2) cd到/etc/apache2/sites-available,新建一个配置文件"ssl",内容如下:3). 创建链接:
$ cd /etc/apache2/sites-enabled
$ sudo ln -s ../sites-available/ssl
4). 重启apache2
$ sudo /etc/init.d/apache2 restart
3. 访问网站 https://HOSTNAME
p.s. 删减部分内容,并修正原文的一些小错误
1. 生成ssl证书:
1) 如果没有安装openssl,sudo apt-get install openssl装一个
2) 生成自签名证书
引用
$ openssl req -new -x509 -days 365 -sha1 -newkey rsa:1024 -nodes -keyout server.key -out server.crt -subj '/O=Company/OU=Department/CN=HOSTNAME'
3). 将server.cst和server.key拷贝到/etc/apache2/ssl/下。这个路径可以更改,但相应的配置文件中的路径也需要更改。
2. 配置apache
1) 启用mod_ssl: $ sudo a2enmod ssl
2) cd到/etc/apache2/sites-available,新建一个配置文件"ssl",内容如下:
引用
<IfModule mod_ssl.c>
#注意,下面这四行应当放在VirtualHost标签之外(原文的apache1.3可能支持放在里头,但2.2不行)
SSLRandomSeed startup file:/dev/urandom 1024
SSLRandomSeed connect file:/dev/urandom 1024
SSLSessionCache shm:/usr/local/apache2/logs/ssl_cache_shm
SSLSessionCacheTimeout 600
<VirtualHost *:443>
ServerAdmin webmaster@localhost
DocumentRoot /var/www
<Directory />
SSLRequireSSL
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
SSLProtocol -all +TLSv1 +SSLv3
SSLCipherSuite HIGH:MEDIUM:!aNULL:+SHA1:+MD5:+HIGH:+MEDIUM
#注意.crt和.key文件的路径必须一致
SSLCertificateFile /etc/apache2/ssl/server.crt
SSLCertificateKeyFile /etc/apache2/ssl/server.key
SSLVerifyClient none
SSLProxyEngine off
<IfModule mime.c>
AddType application/x-x509-ca-cert .crt
AddType application/x-pkcs7-crl .crl
</IfModule>
BrowserMatch "MSIE [2-6]" \
nokeepalive ssl-unclean-shutdown \
downgrade-1.0 force-response-1.0
# MSIE 7 and newer should be able to use keepalive
BrowserMatch "MSIE [17-9]" ssl-unclean-shutdown
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>
ErrorLog /var/log/apache2/error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog /var/log/apache2/ssl_access.log combined
Alias /doc/ "/usr/share/doc/"
<Directory "/usr/share/doc/">
Options Indexes MultiViews FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
Allow from 127.0.0.0/255.0.0.0 ::1/128
</Directory>
</VirtualHost>
</IfModule>
#注意,下面这四行应当放在VirtualHost标签之外(原文的apache1.3可能支持放在里头,但2.2不行)
SSLRandomSeed startup file:/dev/urandom 1024
SSLRandomSeed connect file:/dev/urandom 1024
SSLSessionCache shm:/usr/local/apache2/logs/ssl_cache_shm
SSLSessionCacheTimeout 600
<VirtualHost *:443>
ServerAdmin webmaster@localhost
DocumentRoot /var/www
<Directory />
SSLRequireSSL
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
SSLProtocol -all +TLSv1 +SSLv3
SSLCipherSuite HIGH:MEDIUM:!aNULL:+SHA1:+MD5:+HIGH:+MEDIUM
#注意.crt和.key文件的路径必须一致
SSLCertificateFile /etc/apache2/ssl/server.crt
SSLCertificateKeyFile /etc/apache2/ssl/server.key
SSLVerifyClient none
SSLProxyEngine off
<IfModule mime.c>
AddType application/x-x509-ca-cert .crt
AddType application/x-pkcs7-crl .crl
</IfModule>
BrowserMatch "MSIE [2-6]" \
nokeepalive ssl-unclean-shutdown \
downgrade-1.0 force-response-1.0
# MSIE 7 and newer should be able to use keepalive
BrowserMatch "MSIE [17-9]" ssl-unclean-shutdown
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>
ErrorLog /var/log/apache2/error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog /var/log/apache2/ssl_access.log combined
Alias /doc/ "/usr/share/doc/"
<Directory "/usr/share/doc/">
Options Indexes MultiViews FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
Allow from 127.0.0.0/255.0.0.0 ::1/128
</Directory>
</VirtualHost>
</IfModule>
$ cd /etc/apache2/sites-enabled
$ sudo ln -s ../sites-available/ssl
4). 重启apache2
$ sudo /etc/init.d/apache2 restart
3. 访问网站 https://HOSTNAME
Aug
26
上一次的方法虽然达到了基本要求,但是还是有很多不爽的地方,尤其是
1. 当需要直接操作该虚拟机,或者修改运行时参数(比如增加共享文件夹、修改网卡的模式、分配光驱)时,需要将虚拟机关闭或者休眠,然后再重新用vbox打开,很麻烦,更重要的是当前ssh会话环境全都要关闭,再次建立很麻烦。
2. 由于虚拟机是后台运行的,在关机的时候可能会被忽略,影响数据的安全性,甚至会导致虚拟机挂掉——我遇到的情况是apt包管理器的缓存文件出错,无法安装或卸载现有程序。于是干脆重装了下(把alternate版换成了server版)。
于是上网搜了一下,找到一款很不错的绿色软件——RBTray,可以强制将软件放入托盘(Systray)中,隐藏它在任务栏占用的位置。
这款软件可以在这里下载:http://rbtray.sourceforge.net/
把它下载,解压,运行,然后右键单击窗口的最小化图标,绝大部分窗口就会最小化到托盘中去。
然后在桌面上额外创建两个bat文件:
start.bat
stop.bat
完美:D
1. 当需要直接操作该虚拟机,或者修改运行时参数(比如增加共享文件夹、修改网卡的模式、分配光驱)时,需要将虚拟机关闭或者休眠,然后再重新用vbox打开,很麻烦,更重要的是当前ssh会话环境全都要关闭,再次建立很麻烦。
2. 由于虚拟机是后台运行的,在关机的时候可能会被忽略,影响数据的安全性,甚至会导致虚拟机挂掉——我遇到的情况是apt包管理器的缓存文件出错,无法安装或卸载现有程序。于是干脆重装了下(把alternate版换成了server版)。
于是上网搜了一下,找到一款很不错的绿色软件——RBTray,可以强制将软件放入托盘(Systray)中,隐藏它在任务栏占用的位置。
这款软件可以在这里下载:http://rbtray.sourceforge.net/
把它下载,解压,运行,然后右键单击窗口的最小化图标,绝大部分窗口就会最小化到托盘中去。
然后在桌面上额外创建两个bat文件:
start.bat
VBOX安装路径\VBoxManage startvm Ubuntu
stop.bat
VBOX安装路径\VBoxManage controlvm Ubuntu savestate
完美:D
Aug
22
一个简单的程序:
编译运行:
搞怪:
#include <stdio.h>
#include <unistd.h>
#include <fcntl.h>
#include <sys/types.h>
int main(int argc, char *argv[])
{
int fd = open(argv[1], O_CREAT | O_WRONLY);
if (fd < 0)
{
printf("err open");
return 1;
}
u_int64_t sz = lseek64(fd, (1ull << 40) - 1, SEEK_SET);
if (sz < 0)
{
printf("err lseek64");
return 2;
}
int nWrite = write(fd, &fd, 1);
printf("nWrite = %d\n", nWrite);
close(fd);
return 0;
}
#include <unistd.h>
#include <fcntl.h>
#include <sys/types.h>
int main(int argc, char *argv[])
{
int fd = open(argv[1], O_CREAT | O_WRONLY);
if (fd < 0)
{
printf("err open");
return 1;
}
u_int64_t sz = lseek64(fd, (1ull << 40) - 1, SEEK_SET);
if (sz < 0)
{
printf("err lseek64");
return 2;
}
int nWrite = write(fd, &fd, 1);
printf("nWrite = %d\n", nWrite);
close(fd);
return 0;
}
编译运行:
引用
$ gcc -o hole hole.c -D_FILE_OFFSET_BITS=64
$ ./hole disk
$ ls -lh disk
-rwxr-S--- 1 felix021 felix021 1.0T 2010-08-20 14:36 disk
$ ./hole disk
$ ls -lh disk
-rwxr-S--- 1 felix021 felix021 1.0T 2010-08-20 14:36 disk
搞怪:
引用
felix021@ubuntu-vbox:~/code$ mkdir mnt
felix021@ubuntu-vbox:~/code$ sudo mkfs.vfat disk
mkfs.vfat 3.0.7 (24 Dec 2009)
felix021@ubuntu-vbox:~/code$ sudo mount -oloop disk mnt
felix021@ubuntu-vbox:~/code$ df -lh
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 5.2G 1.5G 3.5G 30% /
...
/dev/sda1 2.3G 957M 1.3G 43% /home
/dev/loop0 1.0T 16K 1.0T 1% /home/felix021/code/mnt
felix021@ubuntu-vbox:~/code$ sudo mkfs.vfat disk
mkfs.vfat 3.0.7 (24 Dec 2009)
felix021@ubuntu-vbox:~/code$ sudo mount -oloop disk mnt
felix021@ubuntu-vbox:~/code$ df -lh
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 5.2G 1.5G 3.5G 30% /
...
/dev/sda1 2.3G 957M 1.3G 43% /home
/dev/loop0 1.0T 16K 1.0T 1% /home/felix021/code/mnt