摘要:
今天写脚本,遇到awk脚本向shell传参的情况,上网谷歌一下,发现都有些麻烦,通过管道,通过eval,感觉都很复杂。于是想到用read来试一下。 首先构造一个测试文件test.txt,里面的内容是1 2 3。 一开始尝试 可是echo $a,发现为空,失败了。 试了下 也无法给a b c 赋值 看 阅读全文
摘要:
Packet size limited during capture 提示说明标记的包没有抓全,在某些操作系统中,默认只抓96个字节,tcpdump中有“-s”参数可用于指定要抓的字节数,“-s 1500”即每个包可以抓1500个字节,‘-s 0’每个包有多少抓多少 TCP Previous seg 阅读全文
摘要:
只实现了head/tail的基本功能,默认显示十行及-n参数。 一、使用带缓冲的系统调用。 write/read等系统调用是不带缓冲的,可以包装一层,使其带缓冲。 typedef struct { int rio_fd; int rio_cnt; char *rio_bufptr; char rio 阅读全文
摘要:
一、线程属性 可以使用pthread_attr_t结构修改线程默认属性,并这些属性和创建的线程练习起来,可以使用pthread_att_init函数初始化pthread_attr_t结构,调用pthread_attr_init后,pthread_attr_t结构所包含的就是操作系统实现支持的所有线程 阅读全文
摘要:
getopt和getoptlong被用来解析命令行参数。 一、getopt #include <unistd.h> extern char *optarg; extern int optind, extern int opterr, extern int optopt; int getopt(int 阅读全文
摘要:
为了保证临界资源的安全性和可靠性,线程不得不使用锁,同一时间只允许一个或几个线程访问变量。常用的锁有互斥量,读写锁,条件变量 一、互斥量 互斥量是用pthread_mutex_t数据类型表示的,在使用之前,必须对其进行初始化,可以把它设置为PTHREAD_MUTEX_INITIALIZER(只适于静 阅读全文
摘要:
一、线程标识 和每个进程都有一个进程ID一样,每个线程也有一个线程ID,线程ID是以pthread_t数据类型来表示的,在Linux中,用无符号长整型表示pthread_t,Solaris 把phread_t数据类型表示为无符号整型,FreeBSD 和Mac OS X 用一个指向pthread结构的 阅读全文
摘要:
设置用户ID(set-user-ID),设置组ID(set-group-ID),sticky set-user-ID: SUID 当文件的该位有设置时,表示当该文件被执行时,程序具有文件所有者的权限而不是执行者的权限。 这样说有点绕,举个例子就是说passwd这个命令,它的所有者是root,并且它的 阅读全文
摘要:
当UNIX函数发生错误时,通常会返回一个负值,而且整形变量errno通常被设置为具有特定信息的值。 errno是全局变量,仅当函数出错才有被改变。对待errno,应注意两条规则 1:如果没有出错,其值不会被例程清除,也就是说,当且仅当函数出错时,马上检查errno的值才有意义。 2:任何函数都不会将 阅读全文
摘要:
int mydup2(int oldfd, int newfd) { int tfd = 0; if (newfd < 0) { err_sys("newfd < 0"); } if (newfd == oldfd) { return oldfd; } while(1) { tfd = dup(ol 阅读全文