你好,游客 登录 注册 搜索
rss订阅 手机访问 
Linux编程
Linux内核的ioctl函数学习

  一般的说,,用户空间的IOCTL系统调用如下所示: ioctl(int fd, int command, (char *) argstruct)因为这个调用拥有与网络相关的代码,所以文件描述符号fd就是socket()系统调用所返回的,而command参数可以是/usr/include/linux/sockios.h头文件中的任何一个,这些个命令根据它可以解决的问题所涉及的方面被分为多种的类型.

  比如:

  改变路由表(SIOCADDRT, SIOCDELRT)

日期:12/08/2007 09:12:45 作者:Linux
Ubuntu7.10 内核编译体会

进入Ubuntu7.10目录后$sudo make menuconfig

出错的话

$sudo apt-get install libncurses*

然后到Ubuntu7.10新立得搜索libncurses,把libncurses5-dev和libncurses5-dbg都装上后make menuconfig就能进入配置菜单了

日期:12/08/2007 09:03:56 作者:Linux
Linux下JDK5或JDK6环境变量的配置
1. 安装
chmod +x jdk-1_5_0_08-linux-i586.bin

./jdk-1_5_0_08-linux-i586.bin

chmod +x jdk-1_5_0_08-linux-i586.rpm

rpm -ivh jdk-1_5_0_08-linux-i586.rpm

2.设置环境变量。
日期:12/07/2007 19:03:26 作者:Linux
Linux中安装OMNeT++过程

我安装的是OMNeT++3.3的版本,首先你可以去OMNeTpp的官方网站http://www.omnetpp.org/下载最新版本。以3.3为例:下载的是omnetpp-3.3-src.tgz

1)解压缩: ~#tar zxvf omnetpp-3.3-src.tgz

日期:12/07/2007 19:00:21 作者:Linux
在java中获得日期和时间的方法

本文是java中获得日期和时间的方法,它包括获得时间、日期、星期和时区的方法;按自定义格式获得时间的方法等。

//获得当前日期和星期
  Date d=new Date();
 
  DateFormat df=DateFormat.getDateInstance(DateFormat.FULL);
  System.out.println(df.format(d)+ " " +df.getTimeZone().getDisplayName());

日期:12/06/2007 12:51:51 作者:花颜草语
Linux下Mozilla浏览器下安装JAVA

Linux下Mozilla浏览器下安装JAVA :

step1  http://www.java.com上下载Linux PRM(自解压文件)

       --jre-6u3-linux-i586-rpm.bin

step2  mkdir /usr/java

step3  cd /usr/java 把下载的文件jre-6u3-linux-i586-rpm.bin放入此目录下

日期:12/06/2007 12:49:38 作者:大亮
Linux网络编程学习之select()详解

select系统调用是用来让我们的程序监视多个文件句柄(file descriptor)的状态变化的。程序会停在select这里等待,直到被监视的文件句柄有某一个或多个发生了状态改变。

文件在句柄在Linux里很多,如果你man某个函数,在函数返回值部分说到成功后有一个文件句柄被创建的都是的,如man socket可以看到“On success, a file descriptor for the new socket is returned.”而man 2 open可以看到“open() and creat() return the new file descriptor”,其实文件句柄就是一个整数,看socket函数的声明就明白了:

日期:12/05/2007 15:36:11 作者:Linux
Linux下多线程编程学习
  线程(thread)技术早在60年代就被提出,但真正应用多线程到操作系统中去,是在80年代中期,solaris是这方面的佼佼者。传统的 Unix也支持线程的概念,但是在一个进程(process)中只允许有一个线程,这样多线程就意味着多进程。现在,多线程技术已经被许多操作系统所支持,包括Windows/NT,当然,也包括Linux。
  为什么有了进程的概念后,还要再引入线程呢?使用多线程到底有哪些好处?什么的系统应该选用多线程?我们首先必须回答这些问题。
日期:12/05/2007 15:30:58 作者:Linux
在Windows平台下使用安装GCC(图)

    我想将linux机 器上的一个程序拿到Windows下用。直接将souWindowsrce codes拷贝到Windows下无法用Windows的C编译器编译,大概是缺少一些库吧。后来,想到Linux下那些文件是用ccgcc编译的,因 此,觉得要是有Windows版本的或ccgcc编译器那就很值得一试了。

    后来在网上搜了半天,似乎没有现成的Windows版本的cc或gcc编译器。不过,如果使用Cygwin, 它可以带有gcc编译器。Cygwin我一两年前用过的,但不是太常用。去了Cygwin网站仔细看了一下,发现Cygwin的确装有gcc。于是便下载 安装了Cygwin,又安装Cygwin环境下的gcc。结果用此gcc竟然可以正常编译Linux下的source codes!下面我就具体介绍一下如何在Windows下安装Cygwin和gcc,以及如何使用。

日期:12/04/2007 12:46:35 作者:GCC
Linux下的run-level
Linux操作系统自从开始启动至启动完毕需要经历几个不同的阶段,这几个阶段就叫做runlevel,同样,当Linux操作系统关闭时也要经历另外几个不同的runlevel,下面我们就准备详细介绍一下runlevel,并向您展示一些小技巧来让您的Linux系统避免不必要的重启动。
日期:12/03/2007 17:25:41 作者:runlevel
Linux库知识大全
3.共享库
共享库是在程序启动时被装载。当一个应用程序装载了一个共享库后,其它应用程序仍可以装载同一个共享库。基于linux的使用方法,共享库还有其它灵活的而又精妙的特性:
更新库并不影响应用程序使用旧的,非向后兼容的版本;
在执行特定程序时,可以覆盖整个库或更新库中的特定函数;
以上操作不会影响已经运行的程序,他们仍会使用已经装载的库。
日期:12/02/2007 11:09:43 作者:Linux
Linux shell命令初认识
  Shell之所以如此被推崇还源于他的强大功能。我不知道windows下的命令是否可以象编程语言那样来用,但是shell的确做到了这一点。Shell本身就是一中解释型的语言,具备了很多高级语言的特性。另外,有由于是解释型的语言,调试起来也方便了很多,不需要编译就可以调试了。除此之外,shell还有两个很重要的特性,那就是:重定向(redirection)和管道(pipes)。提到重定向不得不说说File descriptor。File descriptor0是标准的输出,File descriptor是标准的输入,File descriptor是标准的错误输出。重定向的符号是“>”﹑“<”,分别对应输出和输入。所谓管道,就是可以将一些处理过程链接起来,让一个过程的输出成为一个过程的输入,就想处理的结果可以在其中流动,而不需要外界的干预。
日期:12/02/2007 11:06:17 作者:Linux
Linux2.6内核升级编译成功

我想定制一个属于自己Linux系统,所以从今天起开始学习各种linux的内容,今天开始学习如何编译Linux内核,首先要安装Llinux内核 这个我选择了红帽子9.0的内核安装后下载了Llinux2.6的最新内核,解压后准备进行编译 发现少了很多要用的软件包于是上网搜索 这方面的能用的内容还真少。那只有自己摸索了!

下面将Linux2.6内核升级编译具体步骤公布如下:首先,下载需要软件包及内核源码文件!

下载地址如下(至少现在可用):

 

日期:12/01/2007 16:11:33 作者:Linux
SQLite for linux 的安装过程
首先下载 sqlite-3.3.5.tar.gz
解压并拷贝至你想要安装到的目录下,我选择的是/usr/local/sqlite-3.3.5

接着在终端里:
# cd /usr/local/sqlite-3.3.5
# ./configure
# make
# make install
# make doc

make的时候提示错误
日期:12/01/2007 14:44:14 作者:Linux
Linux系统调用之sysinfo函数解析

【sysinfo系统调用】
 
功能描述:
获取系统总体统计信息。
 
用法:
#include <sys/sysinfo.h>

int sysinfo(struct sysinfo *info); 

日期:11/30/2007 07:20:25 作者:Linuxidc
Linux系统调用之send/sendto/sendmsg函数解析
【send/sendto/sendmsg系统调用】 
   
功能描述:
发送消息。send只可用于基于连接的套接字,send 和 write唯一的不同点是标志的存在,当标志为0时,send等同于write。sendto 和 sendmsg既可用于无连接的套接字,也可用于基于连接的套接字。除了套接字设置为非阻塞模式,调用将会阻塞直到数据被发送完。
日期:11/30/2007 07:18:11 作者:Linuxidc
Linux shell 截取字符方法

Linux shell 截取字符变量的前8位,有6种方法

1.expr substr "$a" 1 8

2.echo $a|awk '{print substr(,1,8)}'

3.echo $a|cut -c1-8

日期:11/29/2007 12:20:33 作者:Mysql
Linux内核配置具体过程

  Linux内核配置的方法很多,make config、make xconfig、make menuconfig、make oldconfig等等,它们的功能都是一样的,区别应该从名字上就能看出来,只有make oldconfig是指用系统当前的设置(./.config)作为缺省值。这里用的是make menuconfig。

  需要牢记:不必要的驱动越多,内核就越大,不仅运行速度慢、占用内存多,在少数情况下、还会引发其他问题。具体过程如下:

首先确定shell是bash。

日期:11/29/2007 12:10:36 作者:Linux
Linux下基于curses的一个简单例程
    最近在Linux下写了一个curses的一个应用程序,感觉不错。使用起来比较方便。大部分都是调用curses的库函数。下面是我使用的例子源码:
#include    
#include    
#include      
#include       
#include    
#include    
日期:11/28/2007 11:17:46 作者:heyunhuan513
Vi加行码

在/root

[root@zhaozhi ~]# vi .vimrc

加入   

set     number

日期:11/28/2007 10:54:11 作者:root
Linux 2.6 module Makefile 模板代码
Linux 2.6 module Makefile 模板代码:
 
# Makefile2.6
ifneq ($(KERNELRELEASE),)
#kbuild syntax. dependency relationshsip of files and target modules are listed here.
日期:11/27/2007 10:34:43 作者:Linux
Debian Linux 2.6.23.8内核编译过程

Debian Linux 2.6.23.8内核编译全过程:

准备:
安装make ,gcc, make-kpkg,运行menuconfig等等和编译内核相关的工具。
apt-get install build-essential kernel-package libncurses5-dev
或者(?)
[apt-get install gcc make automake autoconf gawk m4 kernel-package initrd-tools]
[apt-get install build-essential bin86 kernel-package]
[apt-get install libqt3-headers libqt3-mt-dev]

日期:11/26/2007 10:44:29 作者:Linux
在Linux下获取cpu的个数

     Linux下获得CPU个数一个简单方法就是查看/proc/cpuinfo文件。看出现processor字样的行数是多少条,即有多少个逻辑CPU(包括多核,超线程)。

因此cmd下输入下面命令即可:

日期:11/25/2007 07:31:59 作者:CPU
成功编译uClinux-samsung
今天成功编译uClinux-Samsung并通过了。
uClinux-Samsung是移植到Samsung的uClinux,你可以上网获得源码。在PC机上编译uClinux需要交叉编译工具链,你可以在uclinux的网站上下载到,我使用的是arm-elf-tools-20030314.sh,可以在这儿下到。

执行这个脚本就可以安装好交叉编译工具了。然后只要你有uclinux的源码,你就可以开始编译了。对了,你的linux还必须安装了Ncurse包,不过现在的系统一般提供libncurses代替。
日期:11/24/2007 07:30:34 作者:Linux
Linux下的IO端口和IO内存

  CPU对外设端口物理地址的编址方式有两种:一种是IO映射方式,另一种是内存映射方式。

  Linux将基于IO映射方式的和内存映射方式的IO端口统称为IO区域(IO region)。

  IO region仍然是一种IO资源,因此它仍然可以用resource结构类型来描述。

日期:11/23/2007 08:33:53 作者:eNsEmpire
C语言文件操作函数

8.fprintf()按格式输入到流,其原型是int fprintf(FILE *stream, const char *format[, argument, ...]);其用法和printf()相同,不过不是写到控制台,而是写到流罢了.例:fprintf(fp,"%2d%s",4,"Hahaha");

9.fscanf() 从流中按格式读取,其原型是int fscanf(FILE *stream, const char *format[, address, ...]);其用法和scanf()相同,不过不是从控制台读取,而是从流读取罢了。例:fscanf(fp,"%d%d" ,&x,&y);

日期:11/22/2007 12:08:25 作者:mysql
优化Linux Socket App性能的四个技巧

   在开发 socket 应用程序时, 首要任务通常是确保可靠性并满足一些特定的需求。本文内容包括对于 Sockets API 的使用、两个可以提高性能的 socket 选项以及 GNU/Linux 优化。

  为了能够开发性能卓越的应用程序,请遵循以下技巧:

  最小化报文传输的延时。

  最小化系统调用的负载。

  为 Bandwidth Delay Product 调节 TCP 窗口。

日期:11/21/2007 10:43:20 作者:juns
关于Linux下的vi编辑器
在VI中有两种模式,分别是输入模式以及指令模式。输入模式,就是对文档进行信息输入;而指令模式自然就是对文档进行命令控制了,相当于windows下记事本的菜单或右键菜单的命令。当我们想进入输入模式时,只需要按”i”键即可。而如果我们想要从输入模式切换到命令模式,则可以通过键盘左上角的”ESC”键来实现。输入模式很简单,就不多说了,下面来说说命令模式下的一些常用命令吧。
日期:11/21/2007 10:41:04 作者:vi
Linux下编写C程序( GCC )
在windows下写C程序是一件很容易的事,装好Turbo C就可以了,相信各位学过编程的都十分了解Turbo C吧。特别是现在大学里人人忙考级的情况下,二级C语言大概成了每个人默认考过的等级考试吧。可是在linux下又如何写C程序呢?其实,linux下写C也是很容易的。IDE的话用 eclipse 集成 CDT 模块就行了。当然这属于重量级的了,就如同VC++之于windows一样。那有没有像Turbo C那样的小工具呢,主要也就是用到它的编译功能。恩,这就是这次我们要说的 GCC 了。
日期:11/21/2007 10:36:05 作者:tonynote
Linux通用启动脚本

#!/bin/sh

# Source function library.
. /etc/rc.d/init.d/functions

# See how we were called.
case "$1" in
  start)
             echo -n "Starting XXXXX: "
             # daemon XXXXX
             /usr/sbin/XXXXX start          //启动服务程序的路径
             echo "                                           [  OK  ]"
             touch /var/lock/subsys/XXXXX

日期:11/20/2007 06:41:33 作者:Script
编程从何处着手?
既然喜欢编程,就应该认认真真的学习一门语言,先从VB开始,VB是比较好的入门语言,可视化的,比较简单,是非常好的入门语言。书籍最少应该准备两本,不可能一本书籍会包含VB的所有内容,在看书的时候,可以交叉的看,一本书籍中没有讲到的内容可以在另一本中看到,这样对学习是很有好处的,也能保证所学知识的完整性。学编程是一个很漫长的过程,不要着急,要理论与实践想结合,例程书籍也是很重要的,看源代码对学习也是很有帮助的,等你学完这门VB语言之后,学习别的语言是非常简单,可以尝试C语言,按照C——C++——VC的顺序学习,有助于知识的连贯性,我也希望你能学好的。
日期:11/20/2007 06:39:35 作者:Script
电脑编程应如何学起

软件行业里有一句话:真正的程序员用C++,聪明的程序员用delphi,专业的程序员用VB,你想成为什么样的程序员?

另外,对于没有基础的人来说,学习一下VB是非常有必要的。当然,delphi也可以,毕竟delphi是一门在语法结构上最标准的高级编程语言。

最后,要看看你以后想干什么?

日期:11/20/2007 06:38:15 作者:Script
我们该学什么程序语言?

  除非你像我一样学程序语言只是为了到处献宝,否则你在学一套程序语言前,应该先仔细评估到底要学哪一套。每个程序语言的用途都有很大的差异,走了冤枉路可能会耽误到计画实作的进程。

  我大致上把程序语言分成五类,分述如下:

  Web Page Script Languages

  用来做网页的语言,可以对网页做控制。如果你希望设计出很炫的网页,光靠 HTML 是不够的,你还得学一套 Web Page Script Language,比方说 JavaScript(ECMAScript)和微软的 JScript。不过两者都是系出同门,所以差不多。WML Script(WAP 手机的 script)也是袭自 JavaScript。

日期:11/20/2007 06:33:29 作者:Script
Ubuntu内核的编译及注释

搞了一天,终于把Ubuntu内核编译成功了

重启之后调用新内核,一切正常,不错不错···

唯一遗憾的是没有留下自己的大名在内核上,下次补上···

总的来说编译内核还是比较简单的

但由于各个linux版本千差万别,所以总会遇到这样那样的问题

日期:11/19/2007 08:46:51 作者:xingshi5216
Kernel compilation
I thought to write this HowTo, since the kernel compile process on Ubuntu is made easier because this distro is debian-based.
First of all, download the kernel package you like from kernel.org or from the Ubuntu repositories.
If you want the official kernel patched by the Ubuntu Team, just type:
日期:11/19/2007 08:34:43 作者:Kernel
C#编码良好习惯的养成

  27. 避免指定特殊类型的枚举变量。

  //避免

  public enum Color : long   {

   Red,Green,Blue

  }

  28. 即使if语句只有一句,也要将if语句的内容用大括号扩起来。

  29. 避免使用trinary条件操作符。

  30. 避免在条件语句中调用返回bool值的函数。可以使用局部变量并检查这些局部变量。

日期:11/19/2007 06:47:44 作者:C#inux
好消息!LINUX内核2.6.18终于支持实时功能了
LINUX内核2.6.18终于支持实时功能了,这是个好消息。当LINUX实时功能加强后,它在嵌入式系统的应用就会更广泛了。在这一版发布前,为了使嵌入式系统的LINUX具有实时特性,需要给标准和LINUX系统加上具有实时功能的补丁。实际上,就算是具有实时特性的LINUX内核已经发布了,嵌入式系统的应用还是要滞后一段时间吧。想从网上多找一些有关LINUX内核2.6.18及实时特征的资料,却发现现在的互联网上的中文网页几乎没有相关的文章。可能是因为2.6.18发布的时间还不长,所以其实时特性还没有引起很多人的注意。
日期:11/18/2007 09:46:48 作者:大漠独行
给编程初学者的忠言良语

我始终认为,对一个初学者来说,IT界的技术风潮是不可以追赶的,而且也没有能力��追赶。我时常看见自己的DDMM们把课本扔了,去卖些价格不菲的诸如C#, VB.Net 这样的大部头,这让我感到非常痛心。

而许多搞不清指针是咋回事的BBS站友眉飞色舞的讨论C#里面可以不用指针等等则让我觉得好笑。C++就象当年的ASP一样,“忽如一夜春风来,千树万树梨花开”,结果许多学校的信息学院成了“Web 学院”。

96,97级的不少大学生都去做Web了。当然我没有任何歧视某一行业的意识。我只是觉得如果他们把追赶这些时髦技术的时间多花一点在基础的课程上应该是可以走得更远的。

日期:11/18/2007 09:45:15 作者:李杰斯
关注Linux新内核kernel-2.6.23.1
理解内核版本号
终端,执行命令:rpm -q kernel可以查看内核rpm包,例如:我返回的结果是:

kernel-2.6.23.1-10.fc7

kernel-2.6.23.1-21.fc7

这就是当前我系统上存在的两个内核,如果你在早期的Red Hat Linux上执行这条命令,你所得到的结果可能会是2.4版本的,事实上,Linux内核的命名并不是想之则为之的,内核有专门的机构管理,内核版本的命名也遵循这一定的规则。熟悉了这个格式之后,我们就能很容易分辨这些不同的内核版本。在kernel.org上你可以找到从过去到现在的所有现存内核源代码。
日期:11/18/2007 09:27:43 作者:Linux
安装php5执行编译出现错误用YUM排除故障
安装php5需要gd2的支持,但在安装过程中,执行编译的时候出现下面的错误:

root@web1 gd-2.0.35]# make
cd . && /bin/sh /root/gd-2.0.35/config/missing --run aclocal-1.9 -I config
aclocal:configure.ac:64: warning: macro `AM_ICONV' not found in library
cd . && /bin/sh /root/gd-2.0.35/config/missing --run automake-1.9 --foreign
日期:11/18/2007 09:23:58 作者:田逸
Linux/UNIX编程为什么多用进程少用线程
自己从事Linux/UNIX编程多年,一直用fork在写多进程的程序。当有朋友问起为何Linux下很少用线程编程时才发现自己还真需要研究一下这问题。通过man手册查看fork得到如下提示:

fork creates a child process that differs from the parent process only in its PID and PPID, and in the fact that resource utilizations are set to 0. File locks and pending signals are not inherited.
日期:11/17/2007 11:31:32 作者:zhoulifa
Linux内核中进程调度的理解

我也不太肯定对Linux 内核理解的是否正确,先记下来,只要别误导了别人就行了。

关于Linux 中进程的调度:

用户进程中调用系统调用时,内核会通过系统调用处理程序来继续执行用户进程,在系统调用从内核返回时,内核会先调用调度函数来对用户进程进行调度;

日期:11/16/2007 12:19:06 作者:Linuxidc
ubuntu 7.10 下 Qt 编程安装过程
系统环境: ubuntu 7.10 Gonme KDE-base

首先去下载一个Qt. 我下的是 qt-x11-opensource-src-4.3.0rc1
然后安装:
1、 先安装支持文件 :
sudo apt-get install g++
很快 就装好了。(如果不安装 配置 这里 就不通过
2、配置:
日期:11/15/2007 10:47:48 作者:Linuxidc
vmware下linux内核升级成功了

以前没搞过。所以做了很多次编译。之前查阅了文章,也发现没有谁愿意连续跟踪不同版本的内核升级编译处理指南,所以问题就出现了,每个人会去写一个不同版本的处理方式,都是总结性的,往往可能会遗忘些什么。本文适用于 linux 2.6.19.1 kernel 在vmware下的debian3.1编译和使用。

指南

日期:11/14/2007 16:49:16 作者:Linuxidc
Linux下关于ARM开发笔记
记录一下以前在公司学到的一点关于ARM开发的东西,供以后参考:

1.启动和配置文件
/etc/init.d/rcS下修改启动和配置文件, /tmp目前可读可写。

2.装BSP
BSP即Board Support Package,要根据ARM芯片型号来装,如Motorola M9328MX1ADS / M9328MXLADS,安装文件一般名称为:Linux-BSP-0-3-8.tgz,装好后会生成文件系统rt.cramfs,可进行裁剪。安装好后,可用arm-linux-gcc来调试程序,和linux下gcc差不多。
日期:11/14/2007 16:47:54 作者:Linuxidc
module编译和出现insmod invalid format问题的解决方法

insmod: error inserting 'hello.ko': -1 Invalid module format
      
一些不那么神秘的信息被纪录在文件/var/log/messages中;

Jun  4 22:07:54 localhost kernel: hello: version magic '2.6.5-1.358custom 686
REGPARM 4KSTACKS gcc-3.3' should be '2.6.5-1.358 686 REGPARM 4KSTACKS gcc-3.3'

日期:11/13/2007 18:20:12 作者:hecant
RedHat9下安装gcc时可能遇到的问题及解决
相信现在还有不少人在用经典的RedHat9,毕竟他是完全免费的红帽Linux嘛!

现在介绍一下在安装gcc时可能遇到的问题。

在安装gcc时,可能会提示要求安装下面几个软件包:

binutils-2.13.90.0.18-9.i386.rpm

cpp-3.2.2-5.i386.rpm
日期:11/12/2007 08:35:33 作者:Linuxidc
Linux中删除你用不到的内核
每当Ubuntu中的Linux内核升级为新版本时,它都会将旧版本给留下来,然后你机器上的GRUB菜单就会越来越长,这样做无非是在当你使用新内核出现问题时为你提供一个保障,而大多数情况下,当你使用新内核一切正常,那些老版本的内核你也许根本就不会再用了。本文将指导你如何安全的删除那些废弃不用的旧内核。

首先你需要找出现在用的内核是什么版本。打开终端,使用下面这个命令:

uname -r
日期:11/11/2007 08:17:16 作者:Linuxidc
ubuntu7.10 下使用gcc

在刚安装完ubuntu7.10 时, 系统中的gcc并不能用来开发,还缺少常用的头文件和库文件,还需要安装build-essential这个包。

sudo apt-get install build-essential

⊗注意: 如果你的系统→系统管理→软件源,下面的CD-ROM选中的话将会出现一个错误:

日期:11/11/2007 08:15:04 作者:Linuxidc
百度Linux笔试题

1. 从a.log文件中提取包含"WARNING"或"FATAL",同时不包含"IGNOR"的行,然后提取以":"分割的第5个字段

2. 编写一个脚本,只想简单的减法运算,要求提示输入变量

3. Shell脚本阅读(解释下面执行的功能),请挑出下面程序或脚本中的错误,并说明错在哪里。

#!/bin/bash

日期:11/10/2007 16:20:28 作者:Linuxidc
内容分类