随笔分类 - linux编程实战
本贴谈论linux编程技术,故排名不分先后
摘要:当linux 系统出错时候,常返回一个负值记录在变量errno中。对于errno的使用用两条规则:如果没有出错,其值不会被清除 任一函数不会将errno置0 C标准有2个函数打印出错日志#includechar * strerror(int errnum);此函数讲errno 映射成一个字符串,返回#includevoid perror(const char *msg);此函数首先输出MSG 然后是一个冒号,一个空格,接着是errno出错信息,最后一个换行
阅读全文
摘要:Linux编程大部分都是网络程序,经常会出现Ping不通,大部分是因为网络配置没配置对。下面介绍几个命令 ping 192.168.1.2 要连接某个IP 查看是否可以ping通 能通过万事大吉 route -n 查看当前网络路由,已确定本机是否和要连接的机器是否在一个网段,如果不再一个网段ifconfig eth0 192.168.1.3 netmask 255.255.255.0 修改本机IP地址 和要连接的机器IP在同一网段 route add default gw 192.168.1.1 修改IP后一般会删除默认路由 需要手动添加要是配置生效,需要重启网卡: ifc...
阅读全文
摘要:转载自http://www.cnblogs.com/cute/archive/2011/02/24/1963957.html众所周知, Linux 动态库的默认搜索路径是 /lib 和 /usr/lib 。动态库被创建后,一般都复制到这两个目录中。当程序执行时需要某动态库, 并且该动态库还未加载到内存中,则系统会自动到这两个默认搜索路径中去查找相应的动态库文件,然后加载该文件到内存中,这样程序就可以使用该动态库中的函 数,以及该动态库的其它资源了。在 Linux 中,动态库的搜索路径除了默认的搜索路径外,还可以通过以下三种方法来指定。方法一:在配置文件 /etc/ld.so.conf中指定动态
阅读全文
摘要:1、rpm包安装的,可以用rpm -qa看到,如果要查找某软件包是否安装,用 rpm -qa | grep "软件或者包的名字"。2、以deb包安装的,可以用dpkg -l能看到。如果是查找指定软件包,用dpkg -l | grep "软件或者包的名字";3、yum方法安装的,可以用yum list installed查找,如果是查找指定包,命令后加 | grep "软件名或者包名";4、如果是以源码包自己编译安装的,例如.tar.gz或者tar.bz2形式的,这个只能看可执行文件是否存在了, 上面两种方法都看不到这种源码形式安装的包
阅读全文
摘要:本文转自http://www.91linux.com/html/article/program/cpp/20071207/8934.html一、编译和连接 一般来说,如果库的头文件不在/usr/include目录中,那么在编译的时候需要用-I参数指定其路径。由于同一个库在不同系统上可能位于不同的目录下,用户安装库的时候也可以将库安装在不同的目录下,所以即使使用同一个库,由于库的路径的不同,造成了用-I参数指定的头文件的路径也可能不同,其结果就是造成了编译命令界面的不统一。如果使用-L参数,也会造成连接界面的不统一。编译和连接界面不统一会为库的使用带来麻烦。 为了解决编译和连接界面不统一的问题,
阅读全文
摘要:#!/usr/bin/bash #备份的目的目录 BACDIR="/home/wxr/backup" #备份的子目录每天备份在一个子目录下 SUBDIR=backup-$(date +%m%d%y) #备份的源目录 DIRS[0]="/home/wxr/workspace" DIRS...
阅读全文
摘要:#!/bin/bash# 定义一个方法 它有一个参数代表目录foreachd(){ for file in $1 do if [ -d $file ] then ec...
阅读全文
摘要:线程是可结合的(joinable)或者是分离的(detached)。一个可结合的线程能够被其他线程收回其资源和杀死。在被其他线程回收之前,它的存储器资源(例如栈)是不释放的。相反,一个分离的线程是不能被其他线程回收或杀死的,它的存储器资源在它终止时由系统自动释放。 默认情况下,线程被创建成可结合的。为了避免存储器泄漏,每个可结合线程都应该要么被显示地回收,即调用pthread_join;要么通过调用pthread_detach函数被分离。 int pthread_join(pthread_t tid, void**thread_return); 线程通过调用pthread_join函数...
阅读全文
摘要:最近老看一些服务器网关的代码页看了一些开源的代码。一个重要的技术线程池。 何为线程池,所谓线程池就是一组用来处理,客户请求的线程组 这里的客户指代的是线程池服务的对象。 线程池的实现原理: (1)消息队列调用函数,当有消息到来时候,将消息封装插入消息队列。 (2)有一个 线程池附服务线程,该线程负责检索消息队列,创建线程池线程,将该消息派发到线程池的某一线程处理。 (3)线程池线程参数,该参数应该是一个结构体,该结构体中某项指向一个消息,处理完成之后删除消息,进入等待状态。 源代码如下 代码注释有说明 故不在单独讲解代码: 1 #include 2 #i...
阅读全文
摘要:不知道现在人是懒了还是怎么了都使用这玩意,难道自己不会写makefile吗?我一直觉得makefile书写简单点就好了,就不要用atuomake 之类的工具了。今天同事给了我一个测试程序,就两个文件然后用automake工具生成makefile,我自己又加了一个文件,我自己都不知道如何编译。所以不得已对automake工具简单的研究了下。(1) 简介 Autoconf/Automake工具用于自动创建功能完善的makefile文件。当前大多数软件包都是用这一工具生成makefile文件的。Autoconf/Automake工具组主要包括autoconf、automake、perl语言环境和..
阅读全文
摘要:长久以来为linux 提供的打印是lp 系统,打印的时候直接将文件输入设备 使用如下命令。(一) 命令 lp [options] filename lpr [options] filename options 的值可能如下: -n number - 打印几份 -t title - 打印标题 -d destination 打印机名称 -c (default) 打印之前将任务添加到打印队列 -s(default) 打印之前不讲任务添加到打印队列 -o option 其它额外信息 -P prior 设定打印的优先级别 (二)举例 ...
阅读全文