Menu Home

linux

Linux批量修改文件名

修改后的文件名格式:0001, 0002, …. 0100 …. 0999 Params: $1: 文件所在文件夹 $2: 目标文件的起始编号(宽度+1位), 如:宽度为4位时需要附加一个宽度位(10001) #!/bin/bash cd $1 declare -i count count=$2 ls * | while read file; do mv “$file” ${count:1}.jpg count=$((count+1)) done #下面的代码片段不能处理文件名中的空格,当然也可以使用IFS来解决这个问题 #for file in `ls` #do # mv $file ${count:1}.jpg # count=$((count+1)) #done

Linux版有道词典

OS: ubuntu 12.04 Linux版的StarDic真是越来越难用了。试了下Linux版的有道词典,很不错哦! deb http://ppa.launchpad.net/justzx2011/openyoudao-v0.4/ubuntu trusty main deb-src http://ppa.launchpad.net/justzx2011/openyoudao-v0.4/ubuntu trusty main sudo apt-key adv –keyserver keyserver.ubuntu.com –recv-keys 14C9B91C3F9493B9 sudo apt-get update sudo apt-get install openyoudao ref:

使用jpeglib压缩图片

#include <jpeglib.h> void writeJPEG(unsigned char* pixs, int width, int height, char* file) { struct jpeg_compress_struct jcs; struct jpeg_error_mgr jem; jcs.err = jpeg_std_error(&jem); jpeg_create_compress(&jcs); FILE* fp = fopen(file, “wb”); if(fp == NULL) { perror(“writeJPEG”); return; } jpeg_stdio_dest(&jcs, fp); jcs.image_width = width; jcs.image_height = height; jcs.input_components = 3; //RGB jcs.in_color_space = JCS_RGB; […]

/proc/pid/status各项定义

Name: gedit /*进程的程序名*/ State: S (sleeping) /*进程的状态信息*/ Tgid: 9744 /*线程组号*/ Pid: 9744 /*进程pid*/ PPid: 7672 /*父进程的pid*/ TracerPid: 0 /*跟踪进程的pid*/ Uid: 1000 1000 1000 1000 /*uid euid suid fsuid*/ Gid: 1000 1000 1000 1000 /*gid egid sgid fsgid*/ FDSize: 256 /*文件描述符的最大个数,file->fds*/ Groups: 0 4 20 24 25 29 30 44 46 […]

linux c 解析FLV文件

FLV文件组成 FLV文件由Header和Body两部分组成。 FLV Header 域名 类型 说明 Signature UI8 Signature byte always ‘F’ (0x46) Signature UI8 Signature byte always ‘L’ (0x4C) Signature UI8 Signature byte always ‘V’ (0x56) Version UI8 File version (for example, 0x01 for FLV version 1) TypeFlagsReserved UB[5] Must be 0 TypeFlagsAudio UB[1] Audio tags are present […]

linux c 使用socket处理HTTP请求

#include <stdio.h> #include <sys/socket.h> #include <sys/types.h> #include <time.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #include <netinet/in.h> #include <arpa/inet.h> #include <sys/select.h> #define BUFSIZE 4096 int main(int argc, char **argv) { int sockfd; struct sockaddr_in servaddr; charhttpRequest[BUFSIZE], buf[BUFSIZE]; bzero(httpRequest, sizeof(httpRequest)); //构建请求信息,这里请求http://192.168.2.184:8090/test.flv,这是一个由ffserver搭建的流媒体服务 strcat(httpRequest, “GET /test.flv HTTP/1.1\n”); strcat(httpRequest, “Host: 192.168.2.184:8090\n”); strcat(httpRequest, “User-Agent: Mozilla/5.0 (X11; […]

linux网络编程: AF_INET, AF_INET6, AF_UNSPEC

int getaddrinfo(const char *node, const char *service, const struct addrinfo *hints, struct addrinfo **res); struct addrinfo { int ai_flags; int ai_family; int ai_socktype; int ai_protocol; socklen_t ai_addrlen; struct sockaddr *ai_addr; char *ai_canonname; struct addrinfo *ai_next; }; ai_family参数指定调用者期待返回的套接口地址结构的类型。 它的值包括三种: AF_INET: 函数返回IPV4相关的地址信息 AF_INET6: 函数返回IPV6相关的地址信息 AF_UNSPEC: 函数返回的是适用于指定主机名和服务名且适合任何协议族的地址 如果某个主机既有AAAA记录(IPV6)地址,同时又有A记录(IPV4)地址,那么AAAA记录将作为sockaddr_in6结构返回,而A记录则作为sockaddr_in结构返回。 ref: http://blog.sina.com.cn/s/blog_8184e033010134c4.html

Linux线程的调度策略与优先级

调度策略有3种: SCHED_OTHER: 分时调度策略。线程的默认策略。此策略不能设置线程优先级。 SCHED_FIFO: 实时调度策略,先到先服务。一旦线程占用cpu则一直运行。直到有更高优先级任务到达或自己放弃。此策略可设置线程优先级。 SCHED_RR: 实时调度策略,时间片轮转。当进程的时间片用完,系统将重新分配时间片,并置于就绪队列尾。保证了所有具有相同优先级的RR任务的调度公平此策略可设置线程优先级。 这3个宏在 sched.h 中定义。 线程优先级: 不同操作系统的优先级范围是不相同的,所以在设置线程优先级的时候需要先使用下面2个函数来查询其最大值和最小值: int sched_get_priority_max(int policy); int sched_get_priority_min(int policy); 参数policy是上面介绍的调度策略中的SCHED_FILO或SCHED_RR,注意不能是SCHED_OTHER,因为SCHED_OTHER不支持优先级。 查询和设置调度策略: int pthread_attr_setschedparam(pthread_attr_t *attr, const struct sched_param *param); int pthread_attr_getschedparam(pthread_attr_t *attr, struct sched_param *param); 查询和设置线程优先级: 查询: struct sched_param param; //首先查询线程的调度策略,赋给param //参数attr是create线程时所使用的线程属性 pthread_attr_getschedparam(attr, &param); //从sched_param结构中获取线程优先级 param.__sched_priority; 设置: pthread_attr attr; struct sched_param param; […]

nvidia显卡的xorg配置

生成xorg配置 如果发现系统/etc/X11/xorg.conf文件丢失,你可以使用下面的命令生成一个新的xorg.conf文件 $ X –configure 新生成的xorg.conf.new一般在用户目录下,具体路径请查看输出结果,得到xorg.conf.new文件后需要把它拷贝到/etc/X11/下,并且更改文件名为xorg.conf。如果这个自动生成的文件不符合需求就需要根据具体情况做相应的修改。当然,更方便的方法就使从别的机器上拷贝/etc/X11/xorg.conf到你的系统中,针对Nvidia显卡的xorg配置都使通用的,然后再做相应的修改。 单屏xorg的配置 xorg.conf内容 # nvidia-xconfig: X configuration file generated by nvidia-xconfig # nvidia-xconfig: version 260.19.44 ([email protected]) Sun Feb 27 21:50:39 PST 2011 Section “ServerLayout” InputDevice “irtouch” “SendCoreEvents” Identifier “Layout0” Screen 0 “Screen0” InputDevice “Keyboard0” “CoreKeyboard” InputDevice “Mouse0” “CorePointer” Option “Xinerama” “0” EndSection Section “Files” EndSection […]

Linux串口编程详解

串口本身,标准和硬件 串口是计算机上的串行通讯的物理接口。计算机历史上,串口曾经被广泛用于连接计算机和终端设备和各种外部设备。虽然以太网接口和USB接口也是以一个串行流进行数据传送的,但是串口连接通常特指那些与RS-232标准兼容的硬件或者调制解调器的接口。虽然现在在很多个人计算机上,原来用以连接外部设备的串口已经广泛的被USB和Firewire替代;而原来用以连接网络的串口则被以太网替代,还有用以连接终端的串口设备则已经被MDA或者VGA取而代之。但是,一方面因为串口本身造价便宜技术成熟,另一方面因为串口的控制台功能RS-232标准高度标准化并且非常普及,所以直到现在它仍然被广泛应用到各种设备上。 某些计算机使用一个叫做UART的集成电路来作为串口设备。这个集成电路可以进行字符和异步串行通讯序列之间的转换,并且可以自动地处理数据的时序。而某些低端设备则会让CPU直接通过输出针来传送数据,这种技术叫做bit-banging。 因为“串口”,RS-232和UARTs基本上总是在同一个语境中出现,所以这些名词通常会被搞混。下面逐一解释以下一些重要的名词和术语。 什么是串行通信 计算机可以每次传送一个或者多个位(bit)的数据。“串行”指的式每次只传输一位(1bit)数据。 当需要通过串行通讯传输一个字(word)的数据时,只能以每次一位的方式接收或者发送。每个位可能是on(1)或者off(0)。很多技术术语中经常用mark表示on,而space表示off。 串行数据的速度通常用每秒传输的字节数bits-per-second(bps)或者波特率(baud)表示。这个值表示的是每秒钟被送出的0和1的个数。很久很久以前,300bps就是很快的速度了,而现在的电脑可以处理高达430,800的RS-232速率。表示波特率的单位还有kpbs和Mbps,1kps=1000bps而1Mbps=1000kbps。 一般有人提到串行设备的时候,它通常说可能是某种数据通讯设备-DCE(Data Communications Equipment)或者数据终端设备-DTE(Data Terminal Equipment)。它们之间的区别非常简单,每个信号对,比如传送和接收,它们俩正好是相反的。如果需要将两个DTE或者DCE设备连接起来的话,需要适配器或者交叉线缆将信号对交换。