Xinspace


  • 首页

  • 归档

  • 搜索

linux内核自带的链表使用

发表于 2013-04-09 | 分类于 Others

linux内核自带了链表,所以我们就不用再自己动态申请空间构造链表了。

在程序中想要使用链表,直接用linux提供的宏来操作linux内核链表就可以了。

注意:linux内核提供的链表为循环链表。

下面罗列一下操作linux内核链表的常用的宏:

LIST_HEAD(list_name); //创建名字为list_name的链表头

list_for_each_entry(pos, head, member) //这是便利链表的宏

{

your loop codes here;

}

其中,pos是指向链表宿主节点的指针,head是刚刚创建的链表头名字,member是链表节点在宿主结构体中的名字;

还有一些宏,我就不一一讲解了,大家自己去看list.h这个头文件嘛,里面定义了所有的操作链表的宏。

linux内核的链表还是比较好用的。我写程序的时候如果不是特殊要求的话,都会使用linux的通用链表。

linux内核链表使用及list.h下载地址:http://www.oschina.net/code/snippet_1023919_20145

用户态下多定时器的实现

发表于 2013-04-09 | 分类于 Others

linux系统内核提供了间隔定时器。当设定的时候到了之后,定时器就会给相应的进程发送通知(通常是用信号SIGALARM),于是进程就可以进行相应的动作了。

linux提供了两个系统调用来使用间隔定时器

#include <sys/time.h>

int getitimer(int which, struct itimerval *curr_value);

int setitimer(int which, const struct itimerval new_value, _struct itimerval old_value);_

具体两个函数怎么使用,请大家man一下就ok了。

需要注意的是:linux为应用进程只提供一个定时器,如果一个应用程序需要用到多个定时器的话,需要自己实现(配合linux内核自带的链表)。

这就是本文的目的。

源代码

源代码还是贴到了oschina上了,大家点击下面的链接进入查看或者下载源代码吧:

http://www.oschina.net/code/snippet_1023919_20144

google访问速度很慢

发表于 2013-04-09 | 分类于 Others

前段时间在google上搜索东西还很顺利的,但是最近google的访问速度太慢了。光打开主页就要登上10秒左右,更不要说搜索了。

所以最近一直在用百度。但是有时候比较坑爹,特别是技术类的搜索,各种不着边儿的文章在第一页。所以下定决心把google访问慢的问题解决掉。

在百度上搜了小半天,主要三个原因导致在大陆访问google速度变慢:

1.google推出中国大陆市场;

2.你家网速慢;

3.你没有修改hosts文件来提速。

哈哈。开玩笑的。

下面来讲一下怎么修改hosts文件来尽可能的提速吧。

1.用一下命令打开hosts文件(要以root身份):

linux系统下,用命令:sudo vim /etc/hosts

windows系统下,直接用记事本打开:C:windowssystem32driversetchosts

打开后,里面的内容类似下面这样,ip+至少一个空格+域名:

127.0.0.1 localhost.localdomain localhost

阅读全文 »

主目录下出现C:\nppdf32Log\debuglog.txt 文件

发表于 2013-04-09 | 分类于 Others

最近主目录下(/home/user)总是有一个文件叫

C:\nppdf32Log\debuglog.txt

里面的内容为若干行“NPP_GetValue is called”,很惹人烦。于是google了一下,找到了解决方案。

用以下命令强行删除这个文件:

sudo rm /usr/lib/mozilla/plugins/nppdf.so

问题就解决了。

参考资料请见:http://blog.sina.com.cn/s/blog_71f38909010148hq.html

linux下开通ssh

发表于 2013-04-07 | 分类于 Others

ssh是与telnet类似的远程登陆服务,不过要比telnet快捷/安全。

一 ssh

 

1.查看ssh服务的状态

输入以下命令:

sudo service sshd status

如果出现

Loaded: error (Reason: No such file or directory)

提示的话,说名没有安装ssh服务,按照第二步:安装ssh服务。

如果出现

Active: inactive (dead)

说明已经安装了ssh服务,但是没有开启。按照第三步:开启ssh服务。

阅读全文 »

linux下开通ftp bash:ftp:command not found

发表于 2013-04-07 | 分类于 Others

linux自己提供了ftp(文件传输)服务和ssh(远程登陆,类似tlenet,不过比telnet安全)服务,那么怎么使用呢?

一 FTP:

FTP服务有好多种,本文是使用的vsftp

1.查看ftp服务状态:

首先要确定你的电脑上FTP服务的状态,使用如下命令:

sudo service vsftpd status

如果出现如下提示:

Redirecting to /bin/systemctl status vsftpd.service
vsftpd.service
Loaded: error (Reason: No such file or directory)
Active: inactive (dead)

说明你的主机上没有安装ftp服务,这时你就要安装它,请查看第二步:安装ftp。

如果出现如下提示:

Redirecting to /bin/systemctl status vsftpd.service
vsftpd.service - Vsftpd ftp daemon
Loaded: loaded (/usr/lib/systemd/system/vsftpd.service; disabled)
Active: inactive (dead)

说明你的ftp服务没开启,此时按照第三步:开启ftp服务。

阅读全文 »

网桥与路由器的区别

发表于 2013-04-07 | 分类于 Others

在看《TCP/IP详解 卷1》的时候,看到TCP/IP通常偏好用路由器而不是网桥连接两个网络,然后google了一下网桥和路由器的区别。

路由器是把两个或多个在地理上不相连的网络连接起来。这些网络通常是比较分散的(如一个在中国,一个在美国),地域跨度大的。这两个网络进行通信,IP报文会通过网络层传输,即IP报文到达路由器后,经过链路层(网络接口),到达网络层(IP层),经过IP层转发到该路由器的另一个接口(链路层)

网桥在小范围内的网络连接有较好的表现。不同于路由器,网桥直接将两个网络的链路层连接到一起,从而使得报文传输不经过网络层(IP层)。

大家可能奇怪,为什么网桥不能像路由器一样连接大范围的网络呢?

因为网桥如果要连接大范围的网络的话,就需要记住这些网络中的独立的计算机,而网桥又不能理解网络号,所以网络中任一主机发送的广播就会被网桥发送到所有网段,这样的话网络中珍贵的带宽就会被广播耗尽。

因为路由器转发报文是要通过IP层,从而能够知道报文所要发往的目的网络的网络号,这样广播就只会被转发到制定的网络中,节省带宽。

 

参考资料:http://net.zdnet.com.cn/network_security_zone/2010/0402/1690679.shtml

IO多路复用(select)多线程实现点对点聊天

发表于 2013-04-05 | 分类于 Programming

在网络编程中,IO操作不止本地的read或write,还会有网络套接字上的read和write。这样的话就容易出现这个问题:

当你用fgets函数在等待本地的标准输入,这时IO输入操作会阻塞在这里等待输入。如果此时网络套接字上传来了数据(比如说关闭连接命令),由于你的IO被阻塞在fgets处,无法及时知道网络套接字上传来的关闭命令。当你从fgets处获得数据后,再处理网络套接字发来的关闭命令的话,就响应不及时。

当然,IO会在读的时候阻塞,比如当缓冲区没有任何数据的时候,read会阻塞;写也会阻塞,比如缓冲区填满了数据,这时再用write写的话就会阻塞;连接tcp也会阻塞,当等待accept的队列已满时,就会出现连接阻塞。所以,IO阻塞的情况是经常发生的。

因此,为了解决IO被一个操作阻塞而对其他操作响应不及时的问题,就提出了IO多路复用。

IO多路复用最简单的就是利用select函数啦。

阅读全文 »

fedora18 从文本模式启动而不是图形界面启动

发表于 2013-04-02 | 分类于 Others

在之前的linux版本中,如果想要启动操作系统后直接进入文本模式,那就要修改/etc/inittab这个文件,把其中的5改成3即可。

可是,linux2.6(貌似是)内核之后,这个文件就改了,它不再控制着系统的默认启动模式了。

如果在fedora18下,你用下列命令查看/etc/inittab:

sudo vim /etc/inittab

这个文件中的文字提示如下:

inittab is no longer used when using systemd.

#

ADDING CONFIGURATION HERE WILL HAVE NO EFFECT ON YOUR SYSTEM.

#

Ctrl-Alt-Delete is handled by /etc/systemd/system/ctrl-alt-del.target

#

systemd uses ‘targets’ instead of runlevels. By default, there are two main targets:

#

multi-user.target: analogous to runlevel 3

graphical.target: analogous to runlevel 5

#

To set a default target, run:

#

ln -s /lib/systemd/system/<target name>.target /etc/systemd/system/default.target

#

阅读全文 »

fedora18下安装小企鹅输入法(fcitx)

发表于 2013-03-30 | 分类于 Others

fedora18下自带的ibus输入法不太好用,虽然词库比较大吧,但是用着有时候会出现打字延迟的现象(比如,我在fedora18的终端下写程序的时候就会出现延迟)。

一气之下,便下定决心换fcitx了。

安装步骤如下:

1.卸载自带的ibus

debian系:sudo apt-get remove ibus

redhat系:sudo yum remove ibus

2.安装fctix

sudo yum install fcitx fcitx-pinyin

3.在im-chooser里选择fcitx

sudo im-chooser 然后再选择fcitx

NOTE:在KDE环境下,如果没有找到im-chooser的话,需要安装
$sudo yum install im-chooser
再运行上面的命令,选择fcitx。

4.重新启动gnome就发现可以使用了。

注意:

安装完成后,使用快捷键貌似不能把它调用出来。使用它的就要点击右下角的键盘符号才可以。

可能是我自己没有配置全面吧,反正目前用着不如有快捷键舒服。但是安装完成之后就没有出现过输入延迟的问题了。

1…14151617

Xinspace

Personal blog from xin.

170 日志
6 分类
1 标签
© 2019 Xinspace
由 Hexo 强力驱动
|
主题 — NexT.Muse v5.1.4