查找当前以txt扩展名且创建时间1天前的文件,然后将其删除
find . -name "*.txt" -a -mtime +1 | xargs rm -rf[@more@]
恢复误删文件ext3grep
http://rd.intra.sina.com.cn/blog/?p=98[@more@]
解决 “eth0 设备的 MAC 地址与预想的不符,忽略” 问题
解决 “eth0 设备的 MAC 地址与预想的不符,忽略” 问题[@more@]我在一台笔记本上创建了一个Redhat系统虚拟机,想着只要把虚拟硬盘移入另一台机子,照样能够用虚拟机启动,结果与我设想一样,不过出现了一个小问题,不能上网,要重启网络,出现这样的问题:[root@localhost ping]# ifup eth0eth0 设备的 MAC 地址与预想的不符,忽略。在网上搜了一下,才知道是因为我将虚拟硬盘移入到另外一台机子,这台机子的MAC地址显然和之前机子的MAC地址不一样,所以,到此这个问题就很好解决了首先查看当前所在系统的MAC地址:[ping@localhost netwo
Makefile 读书笔记
Makefile 读书笔记[@more@]编译器只检测程序语法,和函数、变量是否被声明。Makefile里主要包含了五个东西:显式规则、隐晦规则、变量定义、文件指示和注释。其中,文件指示。其包括了三个部分,一个是在一个Makefile中引用另一个Makefile,就像C语言中的include一样;另一个是指根据某些情况指定Makefile中的有效部分,就像C语言中的预编译#if一样;。Makefile中只有行注释,和UNIX的Shell脚本一样,其注释是用“#”字符,这个就像C/C++中的“//”一样。如果你要在你的Makefile中使用“#”字符,可以用反斜框进行转义,如:“#”。最后,
21天学通C++(第四版)笔记
21天学通C++(第四版)笔记[@more@]1 #include <iostream>2 3 int main()4 {5 std::cout << "Hello World!";7 return 0;8 } 会注意到,在cout和endl前面使用std::是烦人事情,可通过两种方法来搞定第一种,在代码清单开始位置告诉编译器使用标准库函数cout和endl。int main(){ using std::cout; using std::endl; ......}第二种,告诉编译器,使用全部的namespace标准,意为没有特殊指定的任何对象可以假定都来自标准namespace。int main(){ using namespace std; ......}可以看出,使用using namespace s
向U盘写文件的C代码
向U盘写文件的C代码[@more@]948 int atm_monitor_write_file(const char* buffer, const ssize_t len) 949 { 950 int i = 0; 951 int fileId = -1; 952 int ret = -1; 953 int writeLen = -1; 954 struct stat fileStat; 955 char mountedPath[64]; /**< 设备挂载路径 /usb-sdX */ 956 char testPath[9][64] = 957 { 958 "/tmp/usb-sda1", 959 "/tmp/usb-sdb1", 960 "/tmp/usb-sdc1", 961 "/tmp/usb-sdd1", 962 &
pthread_once()操作
pthread_once()[@more@]pthread_once()操作 仅执行一次的操作int pthread_once(pthread_once_t *once_control, void (*init_routine) (void))本函数使用初值为PTHREAD_ONCE_INIT的once_control变量保证init_routine()函数在本进程执行序列中仅执行一次。#include <stdio.h>#include <pthread.h>pthread_once_t once=PTHREAD_ONCE_INIT;void once_run(void){printf("once_run in thread %dn",pthread_self());}void * child1(void *arg){int tid=pthread_self(); printf("thread %d entern",tid
pthread_join()
pthread_join()[@more@]pthread_join()会挂起父线程,直至子线程完成才可以执行后面的代码,此外,一个PTHREAD_CREATE_JOINABLE状态的子线程不会自动释放该线程的内存资源,包括线程描述符和其使用的栈;而主线程调用pthread_detach()时,无需等待子线程的完成,它可以立即执行后面的代码,当然,也有可能主线程执行完之后销毁进程,导致子线程未能执行.为了很好的说明互斥锁,我们使用一个实例来进行说明. 假设cond表示条件变量.mutex表示互斥锁.x==y表示我们要满足的测试条件.我们可以有下面的伪代码: #include
线程中的条件变量pthread_cond_wait、pthread_cond_signal
线程中的条件变量pthread_cond_wait、pthread_cond_signal[@more@]条件变量是利用线程间共享的全局变量进行同步的一种机制,主要包括两个动作:一个线程等待 "条件变量的条件成立 "而挂起;另一个线程使 "条件成立 "(给出条件成立信号)。为了防止竞争,条件变量的使用总是和一个互斥锁结合在一起。1.创建和注销 条件变量和互斥锁一样,都有静态动态两种创建方式,静态方式使用PTHREAD_COND_INITIALIZER常量,如下: pthread_cond_t cond=PTHREAD_COND_INITIALIZER 动态方式调用pthread_cond_init()函数,API定
pthread_cond_wait()函数的理解
pthread_cond_wait()函数的理解[@more@]pthread_cond_wait(pthread_cond_t *cond, pthread_mutex_t*mutex)函数传入的参数mutex用于保护条件,因为我们在调用pthread_cond_wait时,如果条件不成立我们就进入阻塞,但是进入阻塞这个期间,如果条件变量改变了的话,那我们就漏掉了这个条件。因为这个线程还没有放到等待队列上,所以调用pthread_cond_wait前要先锁互斥量,即调用pthread_mutex_lock(),pthread_cond_wait在把线程放进阻塞队列后,自动对mutex进行解锁,使得其它线程可以获得加锁的权利。这样其它线程才能对临界资源进行访问并在
pthread_detach
pthread_detach[@more@]创建一个线程默认的状态是joinable, 如果一个线程结束运行但没有被join,则它的状态类似于进程中的Zombie Process,即还有一部分资源没有被回收(退出状态码),所以创建线程者应该调用pthread_join来等待线程运行结束,并可得到线程的退出代码,回收其资源(类似于wait,waitpid) 但是调用pthread_join(pthread_id)后,如果该线程没有运行结束,调用者会被阻塞,在有些情况下我们并不希望如此,比如在Web服务器中当主线程为每个新来的链接创建一个子线程进行处理的时候,主线程并不希望因为调用pthread_join而阻塞
网络断线检测中用到的popen
网络断线检测中用到的popen[@more@]/** * @fn netPing * @brief 获取Ping状态 * @param[in] * @param[out] * @return 0: down, 1: up */int netPing(void){ int i = 0; int ret = APP_FAIL; uint networkByteOrder; char buf[MAX_CMD_LEN] = {0}; char strbuf[100] = {0}; FILE *fd = NULL; networkByteOrder = htonl(pSetupSetPing->detectIpAddr); sprintf(strbuf, "/usr/local/sbin/ping -c 4 -t 1 %s", inet_ntoa(*(struct in_addr*)(&networkByteOrder)))
Ethereal使用入门
Ethereal使用入门[@more@]导读: 1、下载安装winpcap 2、下载安装ethereal 说明:新版本ethereal已经整合winpcap,下载ethereal即可完成安装。 二、使用 启动ethereal以后,选择菜单Capature->Start,就OK了。当你不想抓的时候,按一下stop, 抓的包就会显示在面板中,并且已经分析好了。 下面是一个截图: 1、ethereal使用-capture选项 nterface:指定在哪个接口(网卡)上抓包。一般情况下都是单网卡,所以使用缺省的就可以了。 Limit each packet:限制每个包的
tcpdump的本机安装和使用
tcpdump的本机安装和使用[@more@]对于网络管理人员来说,使用嗅探器能够随时掌控网络 的实际情况,在网络性能急剧下降的时候,能够通过嗅探器来分析原因,找出造成网络阻塞的根源。Tcpdump就是Linux平台下一个以命令行方式运行的 网络流量监测工具。他能截获网卡上收到的数据包,并能够协助网络管理员对其中的内容进行相应的分析。 嗅探器能够截获指定接口或任何接 口的数据包,这取决于如何对嗅探器进行配置。缺省情况下嗅探器一般会显示任何从网络上截获的数据包,但通常会因为数据量过大而使网络管理员理不清头绪。因 此,嗅探器一般都
SVN使用和SVN常用命令
SVN使用和SVN常用命令[@more@]一、创建 svn客栈去到svn做事的根目次,(这个目次是在启动svn做事的时间指定的,启动的下令如:svnserve -d -r /usr/local/svnrepos)推行 创建 客栈下令:svnadmin create new_project如许在/usr/local/svnrepos/ 内里就多了一个new_project目次出来,进入new_project/conf/ 目次 vi svnserve.conf将下面几行的解释去掉[general]anon-access = read #匿名的用户可读auth_access = write #有授权的用户可写password-db = passwd #表示svn用户的授权原料生涯在passwd文件内里 在conf/目次内里 vi passwd,添加