首先,我们来看一下mode_t类型的结构
可以看出,文件的权限位于这个变量的最后9位上。
这是特征位的定义
于是我尝试用这样的语句获取权限特征位:
printf("%o %o %o\n", buff.st_mode&S_IRWXU, buff.st_mode&S_IRWXG, buff.st_mode&S_IRWXO);
但得到的输出是700 60 6
于是我把代码写成了这样
printf("%o\n", (buff.st_mode&S_IRWXU)+(buff.st_mode&S_IRWXG)+(buff.st_mode&S_IRWXO));
就得到了正确的结果:766。
这里需要说明的是,貌似C中+号的运算优先级比&高,所以要使用括号来保证按位与运算先进行。
学校这一学期开了Linux课,课程实验里要求将根目录下所有.txt文件的大小的总和计算出来,但是如果直接用
find / -name '*.txt' | wc -c
的话,算出的是find的查找结果的总字节数,而不是查找到的所有文件的总字节数。
到网上查了一下,发现xargs可以将前一管道的每一个结果作文当前管道的参数,遂将命令改为
find / -name '*.txt' | xargs wc -c
得出的结果中就有所有文件的总字节数。再用grep将总字节数的条目拿出来就好了。
最近在网络上淘到了一台80年代产的SHARP MZ-700计算机,不知为何我总是对这些老旧又精致的东西感兴趣。正好看到它在《掟上今日子的备忘录》中也出场了,就想让这台机器正常地运作起来。
首先我在宿舍,没有电视和其它可以连接AV视频线的显示设备。为了解决这个问题,我在网上买了一个USB采集卡,支持AV线和S端子输入,接上以后显示效果良好。
还有一个重要问题是,MZ-700本身不带有程序功能,BASIC解释环境和其它程序都存储在磁带上。现在原装的磁带可不好找了,好在网上还能下载到数据文件。这些数据文件是MZF格式,
这个网站提供了mzf2wav.exe工具,就是说可以将程序转换为磁带上的音频。这样就简单了,只要找到一台录音机设备和一盘空白磁带,就可以用对录线重新制作程序磁带了。
不过,我上哪找录音机?难道还要买一台?太不划算了。
http://www.sharpmz.org/mztape.htm
这个页面提供了解决方案:MZ-700背后的接口面板上提供了两个连接外置录音设备的3.5mm音频线插孔,可以连接到PC。这可真是好消息!考虑到稳定性,实现这一功能的mztape.exe需要在纯DOS环境下运行,不过就算是虚拟机也依然比较麻烦。其实https://www.youtube.com/watch?v=tEvnMqRa6Tc
这段视频已经很明显地告诉我们,用WINDOWS也没有问题,只是要小心系统发出额外的声音罢了。按照
http://tieba.baidu.com/p/4163131450
提供的教程,将磁带机插口的1-7;2-8;3-5插头短接(别看到短接两个字就发憷,实际上很好做的,随便找一根什么线,截成三段,每一段两端让金属丝裸露,然后拧成一个小小的圆环就行了,总之让金属丝能接触到接口针并且能固定住就可以),就可以用外置的read口输入数据了。至于怎么输入,用手机播放WAV就好了嘛。