分类目录归档:操作系统

批量在文件头插入

最近在整理一套古董代码,古董代码很多头文件stdio.h stdlib.h string.h都没有显示的引用,在gcc上编译总是报错,但是要一个个文件去添加头文文件是件很繁琐的事情,有没有办法一次性把所有的文件都加上这些头文件的引用呢?
继续阅读

bash $用法

$$ 当前bash进程号
$0 当前bash文件名
$? 上一指令的返回值
“$*”参数的内容,单字符串返回,中间以空格分开
“$@”参数内容,返回多个字符串。
$#参数的个数。

bash排除通配符

在bash中我要批量对某些文件做操作可以使用通配符(globbing),但是如果我想排除一些文件,对其他所有文件做操作,要怎么写呢?比如我要把除了sam以外的所有文件(夹)移到sam里面呢?
继续阅读

struct-pack内存对齐(gcc兼容vs内存对齐)

我们公司的游服消息是用结构体定义的,游服移到linux上麻烦大了,因为Vc++的结果体内存对齐方式与gcc的不同(具体不同google下,很多文章)而以前有些程序员偷懒没加#pragma pack去调整对齐,怎么办呢?其实vc++的cl编译器和gcc编译器都有全局调整内存对齐方式的开关。gcc在编译时加上-fpack-struct=n的开关就可以指定以n字节来对齐,而cl编译器的参数是-Zn,在visual studios中右键单击项目,选择properties-c/c++-code generation-struct memory alignment中选择对应的对齐方式即可。如果你想让gcc兼容vc++的默认的古怪的对齐方式可以在编译时加上参数-mms-bitfields

malloc出现segment fault

昨天,我的同事在运行移植Linux后的游服时出现了一个问题,在一个函数中用new创建对象时居然出现了segment fault,查看调用堆栈发现异常是出现在malloc函数中。
用gdb检查不出问题,用valgrid也无法定位出错的具体位置。
直接在函数中调用malloc(),发现用malloc()有时候出现段错误,有时候又不会,初步估计是程序在之前的流程中内存越界,破坏了malloc函数使用的记录内存块信息的结构体,造成分配一些大小内存时,内存访问异常。但是具体的问题还在研究当中。。。

Linux访问windows共享(以及权限问题)

这一段在把公司的服务端移植到Linux下,手头有两台工作机,一台Windows,一台Linux分别在不同网段,路由是单向的Linux可以访问Windows,Windows不能访问Linux为了共享文件我决定在Windows上设置共享,通过共享来分享文件。
Linux访问Windows共享很简单,可以用Mount很方便的将Windows的共享挂在到Linux上,只要输入如下命令
继续阅读