找到相关内容 38
[Linux学习笔记]信号处理
信号的作用:通知进程异步事件的发生。 在Linux中可以识别29中不同的信号,进程可以显示的用kill或killpg系统调用来向另一个进程发信号。信号发生时,内核中断当前进程,进程执行处理函数来响应信号,信号结束后恢复正常的进程处理。 信号    值  处理动作 发出信号的原因 ------------------------------------------------------------
http://www.cyqdata.cn/cnblogs/article-detail-36912 
linux shell编程
1.什么是shell 2. 还是hello world程序 3. shell中的变量 3.1 系统变量 3.2 用户定义变量 3.2.1 用户定义变量规则 3.2.3 shell如何使用变量 3.2.3 全局变量 vs 局部变量  4. shell编程中的控制结构 4.1 条件判定 4.1.1 简单条件判定 4.1.2 组合判定  4.2&
http://www.cyqdata.cn/cnblogs/article-detail-36785 
Linux 网络编程基础(一) ---------------客户端/服务器的简单实现
  一、 Socket的基本知识 1. socket历史与功能 在80年代早期,加利福尼亚大学伯克利分校的一个研究组,将TCP/IP软件一直到UNIX操作系统上。作为实现该项目的一部分,他们设计了一种接口,应用程序可以通过这个接口方便的进行通信。这样做的结果是出现了插件接口(Barkeley Socket)。 图1. Socket层次 Socket实质上提供了进程通信的端点,
http://www.cyqdata.cn/cnblogs/article-detail-36385 
如何向Linux内核提交驱动
Linux驱动程序开发到一定阶段,向kernel.org提交代码是一个很好的选择。对于很多没有向上游提交过代码的开发者来说,还是有很多疑问需要解决的。比如,究竟我们向哪里提交驱动程序?提交时我们的代码应该处于什么状态?提交的过程又如何呢? 向哪里提交 Linux staging tree是Greg KH建立的用于提交驱动程序的git仓库。我们可以把staging tree看作是代码进入mainl
http://www.cyqdata.cn/cnblogs/article-detail-35910 
Linux上安装Oracle 10g 装后感
介绍 最近想研究下LoadRunner测试Oracle性能,然后自己就开始尝试着Linux上安装Oracle.本来感觉这件事情不怎么容易,听朋友说他安装的时候大费周折,重新安装多次,问了好多人才解决的,但完成安装后就感觉还是比较轻松的。现在和大家分享下我的经验,我本身也是Linux菜鸟。 材料来源:Fedora8下安装ORACLE10G数据库图文详解 说明:红字标明处是我的安装体会。 环境介
http://www.cyqdata.cn/cnblogs/article-detail-35607 
各个linux版本优缺点之我见
ubuntu 11.04:都说他好用,桌面那个紫色的背景挺漂亮,但是其他图标还是丑,文件夹图标太大了,默认的可运行文件图标难看,kubuntu更是不好用 mandriva.pwp.2010.2:这个是我用过的桌面做的最漂亮的系统,可惜下载好慢,而且官方没有按时间出新版本,没信心了,而且他的urpmi…………找不到说明帮助文档 debian6:虚拟机下
http://www.cyqdata.cn/cnblogs/article-detail-32800 
如何在Vmware里安装Ubantu9.10Alpha6(虚拟机安装Linux)-熙熙
如何在Vmware里安装Ubantu9.10Alpha6(虚拟机安装Linux)-熙熙 最近加入了TNT团队,我们TNT团队将会在近一年时间内从零起步,开始Linux开发之旅。计划已经差不多定下来,我们几位志同道合的好友,将在此为大家奉献TNT团队旅途上的点点滴滴。 在PC上安装好Linux,先在PC上学习熟悉Linux并熟悉一些基本的操作,这是学习的第一步。 下面,熙熙与大家分享一下如何
http://www.cyqdata.cn/cnblogs/article-detail-32642 
小议Linux staging tree
2.6.28版本起,内核代码的drivers下增加了一个staging目录,这个目录也是用来存放驱动程序,只是这里的驱动和上层目录的不同,加载的时候内核log会打印如下的语句: MODULE_NAME: module is from the staging directory, the quality is unknown, you have been warned. drivers/sta
http://www.cyqdata.cn/cnblogs/article-detail-32367 
谈谈Linux内核驱动的coding style
最近在向Linux内核提交一些驱动程序,在提交的过程中,发现自己的代码离Linux内核的coding style要求还是差很多。当初自己对内核文档里的CodingStyle一文只是粗略的浏览,真正写代码的时候在很多细节上会照顾不周。不过, 在不遵守规则的程序员队伍里,我并不是孤独的。如果去看drivers/staging下的代码,就会发现很多驱动程序都没有严格遵守内核的coding style,
http://www.cyqdata.cn/cnblogs/article-detail-25519 
我的Linux书架
工作几年来,一直从事Linux内核驱动方面的开发。从接触Linux到现在,读过不少Linux方面的书籍,现把认为很不错的一部分列出来和大家分享一下。 入门类 一直认为,在一个系统上学习开发之前,首先需要熟悉这个系统的使用。鉴于天朝的国情,绝大部分人第一个接触的操作系统就是Windows,因此对于这绝大部分人来说,如果要学习Linux开发,学会使用这个系统都是必不可少的一个环节。 现在的Linux
http://www.cyqdata.cn/cnblogs/article-detail-7763 
推荐一个在Linux/Unix上架设ASP.NET的 WEB服务器--Jexus
Linux/Unix上架设ASP.NET WEB服务器,有两个可选方式,一种是Mono+XSP,一种是Mono+Jexus,其它的方式,比如 Apache+mod_mono、Nginx+FastCgi 等等,其实质与XSP并无区别,都是使用Mono所提供的ASP.NET处理模块:Mono.WebServer名字空间实现对ASP.NET网站的支持。Jexus不但具有跨平台ASP.NET服务器这样的
http://www.cyqdata.cn/cnblogs/article-detail-6255 
Linux内核里的DebugFS
DebugFS,顾名思义,是一种用于内核调试的虚拟文件系统,内核开发者通过debugfs和用户空间交换数据。类似的虚拟文件系统还有procfs和sysfs等,这几种虚拟文件系统都并不实际存储在硬盘上,而是Linux内核运行起来后才建立起来。 通常情况下,最常用的内核调试手段是printk。但printk并不是所有情况都好用,比如打印的数据可能过多,我们真正关心的数据在大量的输出里不是那么一目了然;
http://www.cyqdata.cn/cnblogs/article-detail-4231 
Linux 操作系统中使用 Nginx 运行 ASP.NET 4
前言 在我上一篇博文“在 Linux 操作系统中运行 ASP.NET 4 (下)”中讲述了如何在 openSUSE 11.3 操作系统中使用 Apache 2.2.15 运行 ASP.NET 4。虽然说 Apache 是目前最流行的 HTTP 服务器,但是 Nginx 作为高性能的 HTTP 和反向代理服务器,目前已经得到越来越广泛的应用。国外的网站如 Ohloh、GitHub、SourceForge 等,国内网站如新浪、网易、腾讯等,都已经部署了 Nginx。所以,让我们也在 openSUSE 操作系统中部署一个 Nginx 来运行 ASP.NET 4 吧。 openSUSE 静态网络地址配置 在前一篇博文中,是在我家里的 Dell 本本上的 Windows Vista 操作系统中使用 Oralce VM VirtualBox 4.0 来运行 openSUSE 1
http://www.cyqdata.cn/cnblogs/article-detail-2628 
Linux下C语言多线程,网络通信简单聊天程序
功能描述:程序应用多线程技术,可是实现1对N进行网络通信聊天。但至今没想出合适的退出机制,除了用Ctr+C。出于演示目的,这里采用UNIX域协议(文件系统套接字),程序分为客户端和服务端。应用select函数来实现异步的读写操作。      先说一下服务端:首先先创建套接字,然后绑定,接下进入一个无限循环,用accept函数,接受“连接”请求,然后调用创建线程函数,创造新的线程,进入下一个循环。这样每当有一个新的“连接”被接受都会创建一个新的线程,实现1对N的网络通信。在服务端程序中线程中用一个buffer读写,为了避免错误,这时就要给关键代码加上互斥锁work_mutex,具体见代码。   服务端代码 1 #include<stdio.h> 2 #include<stdlib.h> 3 #inc
http://www.cyqdata.cn/cnblogs/article-detail-2627 
Linux 操作系统中运行 ASP.NET 4 (下)
“在 Linux 操作系统中运行 ASP.NET 4 (中)”中已经配置好了 openSUSE 11.3 操作系统。 现在,我们进入“GNOME 终端”,使用 ifconfig 命令验证一下本虚拟的 IP 地址就是一开始我们在宽带路由器中为它分配的静态地址。 ben@linux-nyhn:~> /sbin/ifconfig eth0 Link encap:Ethernet HWaddr 08:00:27:51:5B:0B inet addr:192.168.1.251 Bcast:192.168.1.255 Mask:255.255.255.0 inet6 addr: fe80::a00:27ff:fe51:5b0b/64 Scope:Link UP BROADCAST RUNNING MULTICAST
http://www.cyqdata.cn/cnblogs/article-detail-2533 
Linux 操作系统中运行 ASP.NET 4 (下)
“在 Linux 操作系统中运行 ASP.NET 4 (中)”中已经配置好了 openSUSE 11.3 操作系统。 现在,我们进入“GNOME 终端”,使用 ifconfig 命令验证一下本虚拟的 IP 地址就是一开始我们在宽带路由器中为它分配的静态地址。 ben@linux-nyhn:~> /sbin/ifconfig eth0 Link encap:Ethernet HWaddr 08:00:27:51:5B:0B inet addr:192.168.1.251 Bcast:192.168.1.255 Mask:255.255.255.0 inet6 addr: fe80::a00:27ff:fe51:5b0b/64 Scope:Link UP BROADCAST RUNNING MULTICAST
http://www.cyqdata.cn/cnblogs/article-detail-2447 
Linux设备模型 (1)
随着计算机的周边外设越来越丰富,设备管理已经成为现代操作系统的一项重要任务,这对于Linux来说也是同样的情况。每次Linux内核新版本的发布,都会伴随着一批设备驱动进入内核。在Linux内核里,驱动程序的代码量占有了相当大的比重。下图是我在网络上搜索到的一幅Linux内核代码量的统计图,对应的内核版本是2.6.29。 我们可以很明显的看到,在Linux内核中驱动程序的比例已经非常高了。 Linux 2.6内核最初为了应付电源管理的需要,提出了一个设备模型来管理所有的设备。在物理上,外设之间是有一种层次关系的,比如把一个U盘插到笔记本上,实际上这个U盘是接在一个USB Hub上,USB Hub又是接在USB 2.0 Host Controller (EHCI)上,最终EHCI又是一个挂在PCI Bus上的设备。这里的一个层次关系是:PCI->EHCI->USB Hub->
http://www.cyqdata.cn/cnblogs/article-detail-261 
Linux内核里的智能指针
众所周知,C/C++语言本身并不支持垃圾回收机制,虽然语言本身具有极高的灵活性,但是当遇到大型的项目时,繁琐的内存管理往往让人痛苦异常。现代的C/C++类库一般会提供智能指针来作为内存管理的折中方案,比如STL的auto_ptr,Boost的Smart_ptr库,QT的QPointer家族,甚至是基于C语言构建的GTK+也通过引用计数来实现类似的功能。Linux内核是如何解决这个问题呢?同样作为C语言的解决方案,Linux内核采用的也是引用计数的方式。如果您更熟悉C++,可以把它类比为Boost的shared_ptr,或者是QT的QSharedPointer。 在Linux内核里,引用计数是通过struct kref结构来实现的。在介绍如何使用kref之前,我们先来假设一个情景。假如您开发的是一个字符设备驱动,当设备插上时,系统自动建立一个设备节点,用户通过文件操作来访问设备节点。 如上
http://www.cyqdata.cn/cnblogs/article-detail-163