Linux
文章平均质量分 68
orisun
数据挖掘
展开
-
ubuntu11.10上安装网卡驱动
This is guidance for those with integrated Realtek RTL8111 series gigabit Ethernet, built in to motherboards such as the ASRock G41M-LE.Ubuntu 8.10 (and may other versions) have been reporting pro原创 2013-01-05 18:30:28 · 394 阅读 · 0 评论 -
ubuntu10.04从安装到使用
<!-- <! @page { margin: 2cm } P { margin-bottom: 0.21cm } A:link { so-language: zxx } >-->1.Win7下硬盘安装Ubuntu看我人人上2010/11/9写的日志《Win7下硬盘安装Ubuntu》http://blog.renren.com/blog/3228374原创 2013-01-05 18:23:56 · 287 阅读 · 0 评论 -
无法登录Xwindow
<!-- @page { margin: 2cm } PRE.western { font-family: "DejaVu Sans" } PRE.cjk { font-family: "DejaVu Sans" } PRE.ctl { font-family: "DejaVu Sans Mono", monospace } P { margin-bottom: 0.原创 2013-01-05 18:23:54 · 393 阅读 · 0 评论 -
OpenSSH实现Windows与Linux之间文件的安全传输
SSH实现Windows和Linux系统间的文件实现安全传输本例中使用Windows(ip:192.168.1.25)来做客户端,Linux(ip:192.168.1.26)来做服务器。在Linux中安装ssh服务,这里就不讲了。1.下载OpenSSH : http://sshWindows.sourceforge.net/ 并安装。默认安装目录为C:\Program Files\OpenSSH2原创 2013-01-05 18:23:22 · 329 阅读 · 0 评论 -
pthread_cond_wait的思考
java中有wait()、notify()、notifyall(),Linux C中有一组函数和它们是一一对应的,实现完全相同的功能。int pthread_cond_wait(pthread_cond_t *cond,pthread_mutex_t *mutex);int pthread_cond_signal(pthread_cond_t * cond);int pthre原创 2013-01-05 18:29:14 · 364 阅读 · 0 评论 -
信号通信
signalkill()不仅可以向进程发送SIGKILL信号,也可以发送其他信号。#include#includeint kill(pid_t pid,int sig)pid的取值:正数:要发送信号的进程号0:信号被发送到所有和 pid 进程在同一个进程组的进程−1:信号发给所有的进程表中的进程(除了进程号最大的进程外)int raise(i原创 2013-01-05 18:28:58 · 323 阅读 · 0 评论 -
Ubuntu上编译安装Qt4.7的QOCI驱动
刚刚在Ubuntu上安装上Oracle10g和Qt4.7,现在要安装Qt连接Oracle的驱动QOCI,方法步骤其实是参照Nokia给我文档,在/opt/qtsdk-2010.05/qt/doc/html/sql-driver.html中,我在此翻译给大家。1.把/home/orisun/.bashrc中新添加的内容追加到/home/root/.bashrc中2.root@zcypc:原创 2013-01-05 18:25:20 · 359 阅读 · 0 评论 -
进程间通信
无名管道无名管道用于在在亲缘关系的进程间通信(父子进程或兄弟进程),它是一种半双工的工作模式。在父进程中创建无名管道后,又创建子进程,则父子进程中分别拥有独立的读端和写端。所以要把父进程的写端 fd[1]和子进程的读端 fd[0]关闭。这时,父子进程之间就建立起了一条“子进程写入父进程读”的通道。数据保存在无名管道中,而无名管道在内核中。无名管道、消息队列、信号量都位于内核,共享内原创 2013-01-05 18:24:34 · 227 阅读 · 0 评论 -
最简单的文件操作
<!-- @page { margin: 2cm } P { margin-bottom: 0.21cm }-->5个不带缓存的文件I/O操作:open,read,write,lseek,close不带缓存是指每一个函数都只调用系统中的一个函数,这些函数不是ANSIC的组成部分,是POSIX的组成部分。#include // 提供类型 pid_t的定义#in原创 2013-01-05 18:24:22 · 248 阅读 · 0 评论 -
使用AT指令发送短信
#include#include#include#include#include#include#include#include#include //编码转换#define STTY_DEV "/dev/ttyS0"#define BUFF_SIZE 512#define MSG_SIZE 140 //一条短信的容量原创 2013-01-05 18:23:34 · 617 阅读 · 0 评论 -
Linux常用命令
/**************************************************************************************************//*** ***//*** 文件管理命令原创 2013-01-05 18:22:59 · 252 阅读 · 0 评论 -
Linux内核模块编译
<!--<! @page { margin: 2cm } P { margin-bottom: 0.21cm } >-->Linux内核模块是一种可被动态加载和卸载的可执行程序。通过内核模块可以扩展内核功能,内核模块通常用于设备驱动、文件系统等。如果没有内核模块,需要向内核添加功能就需要自发代码、重新编译内核、安装新内核等步骤。内核空间中不止一个程序试图访问驱动原创 2013-01-05 18:24:01 · 286 阅读 · 0 评论 -
Linux网络编程
先上一个简单例子吧。这一个服务器例程,只做一件:向客户端返回服务器时间:#include#include#include#include#includein.h>#include#include#includestring.h>#include#define PORTNUM 13000#define HOSTLEN 256#define oops(msg) {perror(msg);exi原创 2013-01-05 18:24:18 · 326 阅读 · 0 评论 -
子进程复制了父进程的什么
如果你对代码段、数据段、栈、堆存放哪些数据还不是很清楚,请先看我写和Linux 内存管理。有时会出现父子进程变量的地址一样,但值不一样。看下面代码:#include#includestring.h>#include#includemain(){ char str[4]="asd"; pid_t pid=fork(); if(pid==0原创 2013-01-05 18:29:31 · 372 阅读 · 0 评论 -
进程间协作、同步
进程和进程之间无非是通过磁盘、内核、用户空间传输数据。通过磁盘(也就是文件)实现进程通信这个好理解,服务器进程把计算结果写入文件,客户端进程从文件读数据就可以了。这里的竞争条件是当服务端正在写文件时,客户端是不允许读的。命名管道把数据写入文件,因此它可以独立于进程存在。但是命名管道是一个队列而非常规的文件,当读者把数据读走后,数据就不存在了,下一次读到的是后面的内容。普通管道位于内核,原创 2013-01-05 18:29:09 · 321 阅读 · 0 评论 -
I/O重定向和管道
I/O重定向重定向I/O的是shell而不是程序。下面的例子证明了shell并不将重定向标记和文件名传递给程序。#includemain(int argc,char *argv[]){ int i; printf("%d args:\n",argc); for(i=0;i){ printf("%s\n",argv[i]);原创 2013-01-05 18:29:05 · 336 阅读 · 0 评论 -
execvp
问题:一个程序如何运行另一个程序?答:程序调用execvp#includemain(){ char *arglist[3]; arglist[0]="ls"; arglist[1]="-l"; arglist[2]=0; //参数字符串必须以0结束 printf("********About to execute ls -l\n"); execv原创 2013-01-05 18:29:00 · 552 阅读 · 0 评论 -
UNIX时钟
sleep(n)和alarm(n)的精度是秒。usleep(n)挂起进程n微秒或直到有一个不能被忽略的信号到达。#include#includevoid main(){ initscr(); //初始化curses库和tty clear(); //清屏 int i; for(i=0;i move(i,i+1); //把光标移到(10,20)原创 2013-01-05 18:28:55 · 395 阅读 · 0 评论 -
使用读写缓冲
进程缓冲区我们慢慢来说明为什么要使用缓冲:只有工作在管理员模式下,即只有内核代码才可以访问磁盘、终端、打印机等设备,还可以访问全部的内存。而用户模式下只访问特定区域的内存空间。系统调用就是要从用户空间陷入内核空间,进入管理员模式。系统调用是很花时间的,原因:(1)执行权从用户代码转移到内核代码本身要进行数据传输;(2)管理员模式对应特殊的堆栈和内存环境,系统调用前必须建立好,系统调原创 2013-01-05 18:28:51 · 342 阅读 · 0 评论 -
自己编写more命令
more命令可以实现的功能是很丰富的,包括模式查找。今天我们只是实现它的一个基本功能:more 文件列表在屏幕正文显示已读的百分比按下回车显示下一行按下空格显示下一屏按下q退出按回车、空格、q时没有回显这里有几个问题:要在屏幕正文显示已读的百分比,那我们必须先获取文件列表中各个文件的长度,这个可以使用系统调用lstat#includestruct st原创 2013-01-05 18:28:48 · 333 阅读 · 0 评论 -
Qt-4.7开发环境的搭建
依然是在Ubuntu10.04下。另外注意现在已不是Qtopia时代,现在的qt一次编写,到处运行,下图中Qt libraries 4.7.2 for Linux/X11和Qt libraries 4.7.2 for embedded Linux两个包的内容是完全一样的。1.上图的这个网址是http://qt.nokia.com/downloads/,我们把Qt SDK for Linux原创 2013-01-05 18:25:18 · 275 阅读 · 0 评论 -
写入日志文件
做项目的时候经常需要把一些操作或者是出错记录写入日志文件。要想输出便于阅读的时间格式,至少有两种方法:time_t now;time(&now);char *msg=ctime(&now);time_t now;time(&now);char *msg=asctime(gmtime(&now));下面这小段代码的功能是把指定的字符串写入文件log,同时注明时间。原创 2013-01-05 18:24:53 · 288 阅读 · 0 评论 -
TCP收发图片
recvpic.c#include#include#include#include#include#include#include#include#include#define PORT 3214#define MAXLOG 100main(){ int sockfd; struct sockaddr_in server,cl原创 2013-01-05 18:24:51 · 352 阅读 · 0 评论 -
Linux内存管理
orisun@orisun-desktop:~/Program$size memory2text data bss dec hexfilename2074 284 16 2374 946memory2可以看到一个可执行程序在存储(没有调入内存)时分为代码区,数据区,未初始化数据区三部分。 (1)代码区存放CPU执行的机器指令。通常代码区是共享的,即其它执行程序可调用它。代码段(co原创 2013-01-05 18:22:49 · 248 阅读 · 0 评论 -
Linux I/O复用
epoll首先看个结构体typedef union epoll_data{ void *ptr; int fd; uint32_t u32; uint64_t u64; } epoll_data_t; struct epoll_event { uint32_t events; /* Epoll events *原创 2013-01-05 18:31:50 · 346 阅读 · 0 评论 -
文件位置指针对read、write的影响
首先明确一下,同一个文件在同一个进程中可以被打开多次,只是返回的文件描述符不同。read、write、lseek都涉及到文件指针,文件指针是跟文件描述符关联在一起,跟物理文件是分开的。每个文件描述符都有3个指针:begin、curr、end。可以有两种方法更改curr指针:每次write或read的末位置就是curr指针的位置;使用lseek(int fd,int offset,int w原创 2013-01-05 18:29:33 · 366 阅读 · 0 评论 -
用curses库和多线程画来回运动的字符串
使用curses库可以设置光标的位置和终端屏幕上显示的字符串样式。下面是一个使用curses库的简单示例: #include#includevoid main(){ initscr(); //初始化curses库和tty clear(); //清屏 int i; for(i=0;i move(i,i+1); //把光标移到(10,20)的位原创 2013-01-05 18:29:17 · 421 阅读 · 0 评论 -
多线程基础
创建线程比创建进程快10~100倍。#includeint pthread_create(pthread_t *thread, pthread_attr_t *attr, //线程的属性 void *(*func)(void *), //指向线程所运行的函数的指针 void *arg); //func函数的参数原创 2013-01-05 18:29:12 · 288 阅读 · 0 评论 -
fdopen和popen
popen:让进程看起来像文件#include#includeint main(){ FILE *fp; char buf[100]; int i=0; fp=popen("who|sort","r"); //打开一个命令,因为是只读"r",所以是要读取命令的输出 while(fgets(buf,100,fp)!=NULL) printf("原创 2013-01-05 18:29:07 · 392 阅读 · 0 评论 -
ubuntu11.04下安装配置使用SVN
其实安装apache时./configure命令是有很多参数可以指定的,如果没有显式指定,安装守SVN后你发现在apache的modules目录下并没有mod_dav_svn.so和mod_authz_svn.so。大多数情况是我们安装apache的时候没有考虑到后面还会安装SVN,自然没有指定 ./configure命令的参数,这时候需要自己生成mod_dav_svn.so和mod_原创 2013-01-05 18:26:56 · 306 阅读 · 0 评论 -
重装ubuntu后要做的几件事情
root 帐号sudo passwd root.bashrcalias cls='clear screen'vimrc安装vim后修改.vimrc文件内容如下:" 高亮显示匹配的括号set showmatch" 继承前一行的缩进方式,特别适用于多行注释set autoindent " 为C程序提供自动缩进set smartindent " 使用C样式原创 2013-01-05 18:26:10 · 236 阅读 · 0 评论 -
command>/dev/null 2>&1
/dev/null相当于一个只写文件,所有写入它的内容都会永远丢失,而尝试从它那儿读取内容则什么也读不到./dev/null对于写脚本非常有用:1.禁止标准输出cat $filename >/dev/null#文件内容丢失,而不会输出到标准输出中2.禁止标准错误rm $basename 2>/dev/null#标准错误信息去入"黑洞"一般的com原创 2013-01-05 18:25:32 · 263 阅读 · 0 评论 -
Qt4--FormLayout
FormLayout显然对于Form非常适合。QFormLayout *formLay=new QFormLayout; QLineEdit *name=new QLineEdit; QLineEdit *email=new QLineEdit; QLineEdit *address=new QLineEdit;formLay->addRow(tr("&Name:原创 2013-01-05 18:25:22 · 252 阅读 · 0 评论 -
Linux进程控制
<!--<! @page { margin: 2cm } P { margin-bottom: 0.21cm } >-->_exit()函数的作用是:直接使进程停止运行,清除其使用的内存空间, 并清除其在内核中的各种数据结构;exit()函数则在这些基础上作了一些包装, exit()函数在调用 exit 系统之前要检查文件的打开情况,把文件缓冲区中的内容写回文件。原创 2013-01-05 18:24:32 · 258 阅读 · 0 评论 -
文件锁
fcntl解决文件共享的问题,而select处理I/O复用的情况。flock 用于对文件施加建议性锁, 而 fcntl 不仅可以施加建议性锁,还可以施加强制锁。同时,fcntl 还能对文件的某一记录进行 上锁,也就是记录锁。 记录锁又可分为读取锁和写入锁,其中读取锁又称为共享锁,它能够使多个进程都能在 文件的同一部分建立读取锁。而写入锁又称为排斥锁,在任何时刻只能有一个进程在文件的 某个部原创 2013-01-05 18:24:25 · 247 阅读 · 0 评论 -
Minix文件系统框架
<!--@page { margin: 2cm }H1 { margin-top: 0.6cm; margin-bottom: 0.58cm; line-height: 200%; page-break-inside: avoid }H1.western { font-family: "DejaVu Serif", serif; font-size: 22pt }H1.cjk { font-f原创 2013-01-05 18:23:30 · 508 阅读 · 0 评论 -
Minix进程表结构
<!--@page { margin: 2cm }H1 { margin-top: 0.6cm; margin-bottom: 0.58cm; line-height: 200%; text-align: center; page-break-inside: avoid }H1.western { font-family: "Times New Roman", serif; font-size原创 2013-01-05 18:23:32 · 846 阅读 · 1 评论 -
同步和异步、阻塞和非阻塞
首先说明我对这些概念也不是很清楚,以下内容是我做的一些理事。同步和异步、阻塞和非阻塞这是两组概念,说的是不同的事情,同步和阻塞没有必然的联系,异步和非阻塞也没有必然的联系。同步和异步是只跟IO操作过程中进程的状态变化有关。阻塞和非阻塞就是进程的两种状态。比如你去银行,排除的话就是一种同步的方式,叫号的话就是异步的方式。排队必须自己看着什么时候轮到自己,而叫号则不必,轮到你的时候会触发一个事件,原创 2013-01-05 18:30:33 · 341 阅读 · 0 评论 -
环境
环境是每个程序都可以存取的一个字符串数组,每个字符串都以var=value的形式出现。在shell中列出环境:$ envORBIT_SOCKETDIR=/tmp/orbit-orisunWEKA_HOME=/home/orisun/develop/weka-3-7-4SSH_AGENT_PID=1587TERM=xtermSHELL=/bin/bashenv是一个普通的程序,它并不是s原创 2013-01-05 18:29:02 · 317 阅读 · 0 评论 -
实现ll命令
$ ll wgettotal 544drwxr-xr-x 3 orisun orisun 4096 2011-12-15 09:48 ./drwxr-xr-x 65 orisun orisun 4096 2011-12-20 19:45 ../drwxr-xr-x 11 orisun orisun 4096 2011-08-09 21:55 wget-1.13/-rw-r--r-- 1 orisu原创 2013-01-05 18:28:53 · 643 阅读 · 0 评论