![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Linux编程
lanseshenhua
这个作者很懒,什么都没留下…
展开
-
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 · 1413 阅读 · 0 评论 -
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 · 9050 阅读 · 1 评论 -
端口复用的关键代码
#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 · 790 阅读 · 0 评论 -
一个简单的线程池
//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 · 997 阅读 · 0 评论 -
IBM开发社区上关于Linux多线程编程的文章
一、POSIX 线程详解1、一种支持内存共享的简捷工具2、称作互斥对象的小玩意3、使用条件变量提高效率二、Posix线程编程指南1、线程创建与取消2、线程私有数据3、线程同步4、线转载 2010-04-23 14:59:00 · 1324 阅读 · 0 评论 -
多线程的一个小例子
#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 · 886 阅读 · 0 评论 -
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 · 10113 阅读 · 2 评论 -
测试创建和销毁进程开销于创建和销毁线程开销对比
//对比进程创建和线程创建的时间开销#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 · 4279 阅读 · 0 评论 -
关于递归锁
递归锁在同一线程内起作用。//线程属性#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 · 4033 阅读 · 0 评论 -
使用异步 I/O 大大提高应用程序的性能
非常好的一篇文章,推荐!www.ibm.com/developerworks/cn/linux/l-async/转载 2010-04-21 16:50:00 · 458 阅读 · 0 评论 -
关于pthread_create的手册
要查询pthread_create函数的用法,需要执行以下命令:sudo apt-get install manpages-posix-dev原创 2010-04-21 19:18:00 · 681 阅读 · 0 评论 -
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 · 728 阅读 · 0 评论 -
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 · 813 阅读 · 0 评论 -
又见sizeof
//关于sizeof一个struct结构体#include struct student{}stu;int main(int argc, char *argv[]){ printf("sizeof(stu)=%d/n", sizeof(stu)); return 0;} 在Ubuntu下GCC 4.4.1的测试结果为0,貌似VC6.0为1。其它编原创 2010-04-06 18:35:00 · 502 阅读 · 0 评论 -
文件的读写和上锁
通过使用文件操作,仿真生产者-消费者运行模型。 本实验中需要打开两个虚拟终端,分别运行生产者程序(producer)和消费者程序(customer)。 此时两个进程同时对同一个文件进行读写操作。因为这个文件是临界资源,所以可以使用文件锁机制来保证两个进程对文件的访问都是原子操作。 文件里面就只用一个数字来表示当前的货物数量。文件中的数字最开始初始化为0。且最多容纳9个物品。 //生产者 #include #include #inclu原创 2010-07-07 14:32:00 · 1847 阅读 · 0 评论 -
Ubuntu 10.04安装codeblocks 10.05
<br />http://blog.csdn.net/bruclan/archive/2010/06/27/5696843.aspx转载 2010-07-05 17:32:00 · 1043 阅读 · 0 评论 -
安装使用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 · 1209 阅读 · 0 评论 -
函数栈帧和内存分布笔记
<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 · 1534 阅读 · 0 评论 -
vim python开发环境配置
<br />http://www.pythonclub.org/python-basic/vim原创 2011-01-04 11:03:00 · 1418 阅读 · 0 评论 -
解决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 · 930 阅读 · 0 评论 -
关于弹出光驱的程序
<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 · 1446 阅读 · 0 评论 -
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 · 1201 阅读 · 0 评论 -
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 · 817 阅读 · 0 评论 -
实现自己的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 · 1365 阅读 · 0 评论 -
在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 · 1652 阅读 · 0 评论 -
关于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 · 906 阅读 · 0 评论 -
linux 内核代码构架图
<br />原创 2010-08-21 17:48:00 · 958 阅读 · 0 评论 -
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 · 923 阅读 · 0 评论 -
关于dup2函数
dup2的功能是复制一个现存的文件描述符,函数原型为: int dup2(int filedes, int filedes2); 相当于: close(filedes2); fcntl(filedes, f_DUPFD, filedes2); 具体代码:原创 2010-06-15 12:53:00 · 1192 阅读 · 0 评论 -
调试开关
#include #ifdef PREDEBUG #define DEBUG(format, ...) printf(format,/ ##__VA_ARGS__)#else #define DEBUG(format, ...) do{}while(0)#endifint main(int argc, char *argv[]){ DEBUG("inf原创 2010-04-06 11:08:00 · 565 阅读 · 0 评论 -
预处理
//1.c//预处理#include #define STR "hello,"/ "world"int main(int argc, char *argv[]){ printf("%s/n", STR); return 0;} gcc -E 1.c所得结果为:int main(int argc, char *argv[])原创 2010-04-06 09:26:00 · 720 阅读 · 0 评论 -
一个链表的小练习
练习了一下链表,很简单的,程序注释比较详细,大致测试了一下,没什么问题。/*链表*/#include #include #include #define LIST_SUCCESS 0#define LIST_ERROR -1typedef struct student{ char name[20]; int chinese;//语文原创 2010-03-31 14:56:00 · 549 阅读 · 1 评论 -
如何在Ubuntu下的终端中查单词
虽然Ubuntu有星际译王这类词典,但用惯了Shell,不习惯用图形界面的东西。经过网上查询,可以使用如下方法在终端中查询单词。 首先新建一个Shell脚本,我取名叫做d,里面的内容为:#!/bin/bashw3m -dump -no-cookie http://dict.cn/mini.php?q=$* 保存退出后别忘了提升执行权限:chmod 777原创 2010-04-11 08:57:00 · 2907 阅读 · 2 评论 -
关于手动书写文件的结尾
新建一个文件,随便输入什么,然后保存。比如我输入:56 78 99 200 234 345 666 888 777 1234 用十六进制编辑器查看的结果为: 注意最后多出来的OA这个字符,就是换行符。原创 2010-03-27 16:47:00 · 468 阅读 · 0 评论 -
只使用位运算,交换两个数
说白了就是使用按位异或来做,具体见代码#include #include int main(int argc, char *argv[]){ if( 3!=argc ) { return -1; } int a=atoi(argv[1]); int b=atoi(argv[2]); a^=b; b^=a; a^=b; pri原创 2010-03-25 18:46:00 · 5281 阅读 · 0 评论 -
再看一个内存对齐的例子
struct id3header{ char id3[3]; char ver; char revision; char flag; char size[4];};//sizeof(struct id3header)=10 struct id3header{ char id3[3]; char ver; char revision; char原创 2010-03-28 16:17:00 · 529 阅读 · 0 评论 -
关于缓冲
看两个程序:#include int main(int argc, char *argv[]){ while(1) { sleep(1); printf("x"); } return 0;} #include int main(int argc, char *argv[]){ while(1) {原创 2010-03-27 10:28:00 · 441 阅读 · 0 评论 -
十进制转换成二进制
#include #include void DtoB(int n){ int i; for( i=0 ; i<32 ; ++i ) { printf("%d", (n&(1>(31-i)); n<<1; } printf("/n");}int main(int argc, char *argv[]){原创 2010-03-25 19:20:00 · 819 阅读 · 0 评论 -
内存对齐
http://www.cppblog.com/snailcong/archive/2009/03/16/76705.html转载 2010-03-25 16:03:00 · 671 阅读 · 0 评论 -
tftp配置文件
service tftp{ disable = no socket_type = dgram protocol = udp wait = yes user = root server = /u原创 2010-03-17 19:20:00 · 903 阅读 · 0 评论