- 博客(77)
- 资源 (11)
- 收藏
- 关注
原创 intel inspector xe的VISUAL(EDITOR)变量的设置
我的系统使用Ubuntu 10.04.1,如果直接在/etc/profile里面加入#set VISUAL envVISUAL=/usr/bin/vimexport VISUAL 打开的vim太难看,我写了一个脚本文件#!/bin/bashgnome-terminal -e "vim $1" 然后/etc/profile里面加入的内容改为:#set VISUAL envVISUAL=脚本的绝对路径export VISUAL 这样改错时打开的vim就很漂亮里,不过还有一点就是无法做的
2011-01-24 17:33:00
1445
原创 安装使用Tex
<br />以下操作在Ubuntu10.04下完成:<br /> <br />sudo apt-get install texlive-full<br />sudo apt-get install okular<br />sudo apt-get install kile<br /> <br />安装完成后:<br />如果直接用UTF8,CJKutf8都是乱码的话<br /><br />/usr/share/texmf/tex/latex/beamer/beamer.cls,<br />或/usr
2011-01-05 15:47:00
1236
转载 解决ubuntu下pdf乱码的问题
<br />ubuntu10.04的pdf已经有了很大的改善,但还是有时会出现乱码的情况,参考以下链接可以解决:<br />http://forum.ubuntu.org.cn/viewtopic.php?f=50&t=131480&start=15
2011-01-04 10:37:00
948
原创 函数栈帧和内存分布笔记
<br /> <!-- @page { margin: 2cm } P { margin-bottom: 0.21cm } --><br />call:函数的调用<br />ret:函数的返回<br /> <br />函数在调用时要做两件事:<br />1、将函数的返回地址保存<br />2、跳转到函数代码的位置处执行<br /> <br />函数在返回时要做两件事:<br />1、取出返回地址<br />2、跳转<br /> <br />函数的栈帧<br />每一
2011-01-01 14:18:00
1575
原创 关于弹出光驱的程序
<br />今天看到《Linux网络编程》那本书的一个光驱弹出的程序,我记得在很早很早的时候,有人就写过不断自动弹出和自动关闭光驱的程序,当时还吓倒不少网民。<br /> <br />其实学过驱动或者学过高级编程的人写这样的程序都很简单,经过我的验证,《Linux网络编程》这本书的例子是有点小问题的,open里面缺少一个O_NONBLOCK。<br /> <br />否则打开会返回失败,errno的为123,查看/usr/include/asm-generic/errno.h发现错误是#defineENOM
2010-12-28 11:51:00
1469
转载 Ubuntu10.04使用Chrome,输入法问题
<br />只要删除后,就必须切换输入法才能输入字,否则打不了字。<br />http://forum.ubuntu.org.cn/viewtopic.php?f=8&t=295899<br /> <br />答案在链接的第7楼。<br /> <br />
2010-12-22 19:55:00
1228
原创 多个C文件生成多个目标的makefile
<br />SOURCES=$(wildcard *.c)PROGS=$(patsubst %.c, %, $(SOURCES))all:$(PROGS)$(PROGS):%:%.c gcc $^ -o $@ .PHONY:cleanclean: rm $(PROGS)
2010-12-21 16:20:00
3525
原创 Gedit中文乱码解决办法
<br />http://wiki.ubuntu.org.cn/Gedit%E4%B8%AD%E6%96%87%E4%B9%B1%E7%A0%81
2010-11-27 14:09:00
829
原创 Ubuntu 10.04安装tftp
<br />首先执行:<br /><br />sudo apt-get install tftp-hpa tftpd-hpa <br />然后sodu gedit /etc/default/tftpd-hpa <br />修改配置文件为:# /etc/default/tftpd-hpa<br />TFTP_USERNAME="tftp"TFTP_DIRECTORY="你的tftp目录"TFTP_ADDRESS="0.0.0.0:69"TFTP_OPTIONS="-l -c -s"<br />注意:tftp
2010-11-09 11:56:00
1138
原创 在Ubuntu上无法通过fcntl设置O_SYNC
<br />如题,看如下测试代码:<br />#include <stdio.h>#include <stdlib.h>#include <unistd.h>#include <sys/types.h>#include <sys/fcntl.h>#include <stdlib.h>int main(int argc, char *argv[]){ int fd=open("data", O_RDWR|O_CREAT, 0777)
2010-09-19 19:43:00
1677
原创 实现自己的ls
<br />该程序实现的是ls -al<br />#include <stdio.h>#include <stdlib.h>#include <unistd.h>#include <sys/types.h>#include <sys/stat.h>#include <grp.h>#include <pwd.h>#include <time.h>#include <string.h>#include <dirent
2010-09-19 19:16:00
1389
原创 关于NULL
<br />看完下面代码估计就明白了<br />#ifndef NULL# if defined __GNUG__ && / (__GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 8))# define NULL (__null)# else# if !defined(__cplusplus)# define NULL ((void*)0)# else# define NULL (0)# endif
2010-08-23 15:41:00
926
原创 文件的读写和上锁
通过使用文件操作,仿真生产者-消费者运行模型。 本实验中需要打开两个虚拟终端,分别运行生产者程序(producer)和消费者程序(customer)。 此时两个进程同时对同一个文件进行读写操作。因为这个文件是临界资源,所以可以使用文件锁机制来保证两个进程对文件的访问都是原子操作。 文件里面就只用一个数字来表示当前的货物数量。文件中的数字最开始初始化为0。且最多容纳9个物品。 //生产者 #include #include #inclu
2010-07-07 14:32:00
1914
转载 Ubuntu 10.04安装codeblocks 10.05
<br />http://blog.youkuaiyun.com/bruclan/archive/2010/06/27/5696843.aspx
2010-07-05 17:32:00
1064
原创 fork函数
fork函数的作用是创建一个新进程,其原型为: pid_t fork(void); 要使用fork函数必须包含#include fork函数调用一次返回两次,子进程的返回0,父进程的返回子进程的pid,Linux下调用fork函数后。子进程和父进程之间的数据共享方式是写时复制。 看源代码: 多运行几次,注意子进程里面printf("father process id is %d/n", getppid());这句输出的内容,如果main函数先行结束,那么就输出为1,否则输出为m
2010-06-17 21:12:00
943
原创 关于dup2函数
dup2的功能是复制一个现存的文件描述符,函数原型为: int dup2(int filedes, int filedes2); 相当于: close(filedes2); fcntl(filedes, f_DUPFD, filedes2); 具体代码:
2010-06-15 12:53:00
1224
原创 C++中使用引用来访问new出来的内存
<br />#include <iostream>using namespace std;int main(int argc, char* argv[]){ int &a=* new int[10]; int b[10]={1,2,3,4,5,6,7,8,9,10}; memcpy(&a, b, sizeof(int)*10); for (int i=0; i<10; i++) { cout<<*(&a+i)<<endl; } return 0;
2010-06-13 10:41:00
1144
原创 DM9000接收UDP报文
<br />主要就是在上篇文章中的驱动程序里增加一个read函数。<br />另外在open函数里的iow(0x05, DIS_LONG|DIS_CRC|RXEN); 改为iow(0x05, DIS_LONG|DIS_CRC|RXEN|PRMMC); <br />其中PRMMC是一个宏:#define PRMMC 1<<1<br /><br /><br />增加的read函数如下:<br />//读取UDP报文static ssize_t dm9k_read(struct file* filp,
2010-06-01 17:58:00
2115
1
原创 DM9000发送UDP报文
DM9000的驱动为: #include #include #include #include #include #include #include #include #include #include #include #include #include #define DM9K_MAJOR 244 /*预设DM900
2010-05-30 16:43:00
2798
1
原创 ARM开发板(S3C2440)上LED灯驱动及跑马灯的实现
驱动程序的代码为:#include #include #include #include #include #include #include #include #include #include #include #define LED_MAJOR 244 /*预设LED的主设备号*/#define rGPECON (*(vol
2010-05-27 17:30:00
3408
原创 minicom的使用
Linux下的minicom相当于windows下的超级终端,用来和串口通信用的。安装:Ubuntu 下使用如下命令安装sudo apt-get install minicom配置:由于Minicom使用中文配置存在问题,把语言环境改为英文# export LANG=sudo minicom -s
2010-05-21 18:38:00
919
原创 端口复用的关键代码
#include #include //type为sock的type,addr为已初始化好的sockaddr,alen为addr的长度,qlen为listen的第二个参数//出错返回-1,正确返回listen后的套接字描述符int initserver(int type,const struct sockaddr *addr,socklen_t alen,int qlen){
2010-05-06 11:27:00
822
原创 Linux下的多进程间共享资源的互斥访问
把源代码运行一遍就知道了#include #include #include #include #include #include pthread_mutex_t* g_mutex;//创建共享的mutexvoid init_mutex(void){ int ret; //g_mutex一定要是进程间可以共享的
2010-05-04 19:21:00
9080
原创 一个简单的线程池
//threadpool.h#ifndef __THREADPOOL_H__#define __THREADPOOL_H__#include typedef void* (*task_fun)(void*);//用链表来维护等待任务typedef struct threadtask{ //任务的执行函数 task_fun task; //执行
2010-04-28 08:56:00
1017
原创 linux线程的优先级设置
linux并不是实时操作系统,把下面的代码运行一遍就能够理解了,代码有很详细的注释。 #include #include #include #include #include #include void * thr_fun(void *arg){ int policy, ret; struct sched_param param; //获取线程调度
2010-04-24 18:12:00
10159
1
原创 关于递归锁
递归锁在同一线程内起作用。//线程属性#include #include #include pthread_mutex_t g_mutex;void test_fun(void);static void thread_init(void){ //初始化锁的属性 pthread_mutexattr_t attr; pt
2010-04-24 13:39:00
4076
转载 IBM开发社区上关于Linux多线程编程的文章
一、POSIX 线程详解1、一种支持内存共享的简捷工具2、称作互斥对象的小玩意3、使用条件变量提高效率二、Posix线程编程指南1、线程创建与取消2、线程私有数据3、线程同步4、线
2010-04-23 14:59:00
1345
原创 多线程的一个小例子
#include #include #include #include #include #include #define THNUM 5pthread_mutex_t g_lock=PTHREAD_MUTEX_INITIALIZER;void* thr_fun(void* arg){ pthread_detach
2010-04-22 15:55:00
905
原创 测试创建和销毁进程开销于创建和销毁线程开销对比
//对比进程创建和线程创建的时间开销#include #include #include #include #include void* thr_fun(void* arg){ pthread_exit(NULL);}int main(int argc, char *argv[]){ struct timeval tv1
2010-04-22 15:51:00
4312
原创 关于pthread_create的手册
要查询pthread_create函数的用法,需要执行以下命令:sudo apt-get install manpages-posix-dev
2010-04-21 19:18:00
707
转载 使用异步 I/O 大大提高应用程序的性能
非常好的一篇文章,推荐!www.ibm.com/developerworks/cn/linux/l-async/
2010-04-21 16:50:00
475
原创 epoll的简单用法示例(程序还有bug,但只是为了示例epoll的用法就不改了)
//epoll用法示例//创建PIPENUM个pipe和子进程,子进程负责写,父进程负责读#include #include #include #include #include #include #include #define PIPENUM 4int fdPipe[PIPENUM][2];int createPipe(void){ int
2010-04-21 11:32:00
746
原创 poll的用法示例(程序还有bug,但只是为了示例poll的用法就不改了)
//创建PIPENUM个pipe和子进程,子进程负责写,父进程负责读#include #include #include #include #include #include #include #define PIPENUM 4int fdPipe[PIPENUM][2];int createPipe(void){ int i, ret; for
2010-04-21 10:21:00
835
原创 利用共享存储实现父子进程间的通信
#include #include #include #include #include #define SHMSIZE 4096*2int main(int argc, char *argv[]){ int shmid=shmget(IPC_PRIVATE, SHMSIZE, IPC_CREAT|0666); if( -1
2010-04-19 11:02:00
856
原创 Linux下利用信号量实现PV操作
假设两个进程(父子进程)对一个文件进行写操作,但是这个文件同一时间只能有一个进程进行写操作。//利用信号量实现pv操作#include #include #include #include #include #include
2010-04-18 20:29:00
4163
原创 利用消息队列实现两个进程之间的文件复制
一个进程负责发送文件,一个进程负责接受文件。//实现文件的拷贝,本进程负责发送数据到消息队列,文件名由命令行参数传递#include #include #include #include #include #include #include #include #define MSGTYPE 100
2010-04-18 16:31:00
2515
原创 使用mmap实现自己的PIPE
程序没有仔细测试,如果有BUG请留言,谢谢!//pipe.h#ifndef __HEAD_H#define __HEAD_H#define BUFSIZE 4000//读写标志typedef enum{ READ, WRITE}RDWRFLAG;//缓冲区和控制标志typedef struct { char buf[BUFSIZE];
2010-04-18 09:34:00
884
读取无符号数
2008-06-28
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人