Jump to Navigation

Linux

Linux/Unix操作系统

使用select+blocked socketpair模拟新版本内核才支持的nonblock socketpair

话说服务器系统太老真是不爽,现在使用大多数服务器系统都是debian5,而这个系统的内核版本2.6.26,glibc 2.7,一些很方便的函数像pipe2, nonblock socketpair恰好从内核2.6.27开始支持,需要用到这个功能,又不能不兼容这要部署的服务器版本,真郁闷。
现在要实现一个线程间的非阻塞通信,本来在使用的桌面系统上找到pipe2,从man手册上看完全符合使用要求,没想到在服务器上先测试了一下,直接没有这个函数,查了一下手册,这个原来从glibc 2.9加入的。
后面又找到了socketpair函数,这个也非常方便,这回还先看了一下服务器,有这个函数,可谁知系统又没有定义一个叫SOCK_NONBLOCK的宏,无法使用它的nonblock模式。

苦苦思索一番,找到一种解决办法,完整的方法是,
使用#ifdef编译指令,加select block模式的socketpair,这样即能在新系统上使用,也可在比较旧的系统上运行。

大概步骤如下,

首先使用socketpair创建一对已经连接的socket,

Linux Kernel 2.6.37发布

Linux 内核 2.6.37 发布,带来 Ext4 性能提升I/O 节流控制支持。

Category:

我的第一个kde4程序

在使用bespin中的xbar kde4 plasma applet的时候,遇到一个自定义菜单的功能,希望在菜单中有一功能,能最小化所有的窗口,能恢复所有窗口功能。
没有找到现成的工具或者方法,所以写了一个简单的使用kde4基础库的小工具来实现这一功能。另外这个小程序还有一个功能,可根据程序名字把其窗口提到最上层,展示给用户,这功能用于使用dolphin显示某些固定文件夹,如在已经开启的dolphin中显示文档目录,并把dolphin拉到最上层。

刚开始写kde4的程序,只用了kde4基础库的三个类,代码:

Category:

重拾kvm, 内核级虚拟机

kvm虚拟机(Kernel-based Virtual Machine)是运行与linux上的内核级虚拟机实现,相比其他的内核级虚拟级,kvm有很大优势,内核级运行,相对简单轻量,是一种关虚拟机,理论上效率更高,完全GPL。当然也有不少缺点,宿主机当然只能是linux了,客户机无所谓,没有完善易用的管理工具,需要与其他内核模块一起使用,对宿主机CPU有要求,必须支持VT技术才行。

其他的虚拟机,包括老牌的vmware,企业级,个人桌面版本都比较完善,但越来越庞大,越来赶不上linux内核的发展,使用它被限制在某些特定的内核版本。virtualbox,桌面级应用非常简便,也还可以,不地以IT大颚Oracle收购,应该对企业级应用的支持变好,但桌面级应用就不知道了。这两个平台都是全虚拟化平台。还有别一个半虚拟化平台xen,这个本来很有希望的虚拟化实现,却由于对内核来说过于复杂,不有其他一些原因没能进入内核,听说也 是很强大的。

Taxonomy upgrade extras:

使用KVM 安装的windows xp 64位系统效果图

已经使用了vhost-net内核加速驱动,virtio内核加速硬盘驱动。

效率还不错,准备把现在用的虚拟机全迁移到KVM上来。


Taxonomy upgrade extras:

修改服务器版linux系统上的dummy虚拟声卡最大声道数

最近在一个项目中需要使用到服务器上的声卡,当然也不是需要真的物理声卡(真有物理声卡,服务器在机房中播放音乐,放电影?)。我们需要的是虚拟语音声卡,能处理客户端到服务器的语音流,不需要真正的播放。

我们需要的这个虚拟声卡,在linux中作为一个内核模块存在、运行,snd-dummy。

默认的snd-dummy模块的声道数是8,远少于项目需要的声道数,现在试着将其改到128.

这个模块现在已经包含在内核模块中,但它是从alsa-driver包中提取出来的,与其同步,与其重新编译内核,不如使用alsa-driver包编译这个模块。

下载解压alsa-driver-1.0.23.tar.bz2,转到alsa-driver-1.0.23/alsa-kernel/drivers,修改dummy.c源文件,第66行,将赋值的8改为128,
static int pcm_substreams[SNDRV_CARDS] = {[0 ... (SNDRV_CARDS - 1)] = 128};

今天发现一个很强的软件包

软件包的名字叫CImg, 强就强在这个包只提供了一个可用的头文件,其他什么都不需要,并且这个头文件的大小是1.9M,真强。

发现这个包是另一个包对它依赖,wxcam, 一个摄像头工具。

Taxonomy upgrade extras:

gtk-theme-switch小工具

linux桌面两大gui库阵营,gtk+, qt/kde,总在主要路线的有差别,而也总是有人希望能整合两者,现在kde4项目组推出了一个类似现在kde4的oxygen风格的gtk风格组件,名字叫oxygen-gtk

由于使用gtk+/gnome比较少,还不会更改gtk+的风格,找到一个小工具,名字叫gtk-theme-switcher,可以有一个小窗口查看当前系统可用的gtk风格组件,可以切换预览相关风格组件。

在使用时,如果使用普通用户启动,则该工具会修改$HOME/.gtkrc-2.0配置文件,大体内容如下,

# -- THEME AUTO-WRITTEN BY gtk-theme-switch2 DO NOT EDIT
include "/usr/share/themes/oxygen-gtk/gtk-2.0/gtkrc"

include "/home/gzleo/.gtkrc-2.0.mine"

# -- THEME AUTO-WRITTEN BY gtk-theme-switch2 DO NOT EDIT

Taxonomy upgrade extras:

64 位ubuntu linux安装ppstream

需要先安装ia32-libs包,但并没有完,原因在于这个包太老了, 不包括ppstream for linux要求的qt4webkit包.
所以,只能在gentoo的下载中找到emul-linux-x86-qtlibs-20100915.tar.bz2类似包,全部解压到ubuntu系统中,
另外,fuse32位在这些包中不带,要在其他的32位系统中编译出来,放在ubuntu系统的/usr/lib32目录. 否则会出现找到libemscore.so.0文件的问题.

现在下载ppstream_1.0.0-1_i386.deb包,安装如下,
dpkg -i --force-all ppstream_1.0.0-1_i386.deb

执行PPStream即可.

Taxonomy upgrade extras:

在Linux等UNIX家族操作系统玩转Symbian!

一、前言
我在这里运用简单的文字向同学们介绍如何在Linux操作系统下完成对Symbian系统的一些操作,这里讲的内容适用于同是采用塞班系 统的UIQ系以及S60系(含S60v5!)平台。另外,我在这里要郑重说明的是,塞班公开了这些工具的源代码,这里讲的内容也同样适用于 FreeBSD、Mac OSX等等Unix家族操作系统。同时,借助Wine相同程序的最新版本在Wine可支持的操作系统上同样可以工作的很好。在这篇文章中,我将向大家介绍 怎样获取相关工具,如何运行这些工具生成证书(根证书)、签名软件、打包、脱壳等基本操作。

Taxonomy upgrade extras:

页面

订阅 RSS - Linux


Main menu 2

by Dr. Radut