随笔分类 -  Linux/Unix

摘要:主要有三种方案:(1)调用Alarm,它在指定超时期满时产生SIGALRM信号,此方法涉及信号处理,而信号处理在不同的实现上存在差异,而且可能干扰进程中现有的ALARM调用。(2)在SELECT,即多路复用中阻塞等待IO,因为select有内置的时间限制,以此代替直接阻塞在read或write上的调用。(3)使用较新的SO_RCVTIMEO和SO_SNDTIMEO套接字选项,这个方法的问题在于并非所有的实现都支持这两个套接字选项。一、首先看一个如何调用Alarm,它主要是通过对慢系统调用产生中断信号来完成。int connect_timeo(int sockfd, const SA *sapt 阅读全文
posted @ 2012-03-17 23:51 杨少宁 阅读(2286) 评论(0) 推荐(1) 编辑
摘要:先描述一下整体的流程及思路: 客户端从标准输入读取一行文本,发送给服务器,服务器收到文本后,将文本直接返回给客户端,即回显。整体采用TCP协议完成。 客户端大致代码:socket,connect函数略去char sendline[1024],recvline[1024];while( fgets(sendline, 1024, stdin) != NULL){ //从标准输入读取 writen(sockfd,sendline,strlen(sendline)); //发送给服务器,Sockfd就是与服务器联通的Socket if(readline(sockfd, recvlin... 阅读全文
posted @ 2012-03-15 19:05 杨少宁 阅读(4771) 评论(3) 推荐(3) 编辑
摘要:为允许在线程或进程间共享数据,同步通常是必须的。常见的同步方式有:互斥锁、条件变量、读写锁、信号量。另外,对于进程间的同步,也可以通过进程间通信的方式进行同步,包括管道(无名管道、有名管道)、信号量、消息队列、共享内存、远程过程调用,当然也可以通过Socket来进行网络控制。一. 互斥锁和条件变量是同步的基本组成部分 互斥锁和条件变量出自Posix.1线程标准,多用来同步一个进程中各个线程。但如果将二者存放在多个进程间共享的内存区中,它们也可以用来进行进程间的同步。1. 互斥锁用于保护临界区,以保护任何时刻只有一个线程在执行其中的代码,其大体轮廓大体如下: lock_the_mutex... 阅读全文
posted @ 2012-03-13 23:09 杨少宁 阅读(9499) 评论(6) 推荐(3) 编辑
摘要:1. 统计一个目录下所有普通文件的总行数#实用场景:毕业设计时,需要统计自己的代码行数# 方案一:find.-typef-name"*.c"-execcat{}\;|grep-v'^$'|wc-l 解释:find . -type f -name "*.c" 查找当前目录下所有以.c结尾的文件,如果不考虑文件类型,可以直接实用find . -type f即可。 -exec cat {} \; 是将找到的文件采用cat命令输出; grep -v '^$' 是将不是空行的内容进行统计,如果是空行就不统计,它相当于一个过滤器。 w 阅读全文
posted @ 2011-10-16 16:07 杨少宁 阅读(1684) 评论(1) 推荐(2) 编辑
摘要:在文件score.txt中存有如下数据:(姓名 分数)lisi 88bokeyuan 97zhangsan 77wangwu 89hongliu 92zhanghua 97在文件student.txt中存有:zhangsanhongliu使用awk, cut, grep, find等任意shell脚本,输出student.txt所有学生的分数,即输出:zhangsan 77hongliu 92如果只在score.txt中处理,可以很容易得写出awk ' { if ($1 == "zhangsan") print $0} ' score.txt但是结合另外一个 阅读全文
posted @ 2011-09-25 15:43 杨少宁 阅读(5815) 评论(1) 推荐(0) 编辑
摘要:对于一个进程,它每次打开、创建或者删除一个文件时,内核就要对该进程进行文件访问权限测试,而在对具体某个文件进行测试时,还需要测试其对目录(也就是文件路径)进行权限测试。比如要修改/usr/include/stdio.h,需要对/、/usr和/usr/include这三个目录进行权限测试,保证有对这三个目录的执行权限(目录索引需要执行权限,读权限只是显示)。进行访问权限测试的过程如下【涉及文件所有者(st_uid和st_gid)和进程的有效ID(有效用户ID及有效组ID)】:(1)若进程有效用户ID为0(超级用户),则有所有权限(2)若进程的有效用户ID=文件所有者ID,表明该进程拥有该文件,此 阅读全文
posted @ 2010-12-12 20:58 杨少宁 阅读(3253) 评论(1) 推荐(1) 编辑

点击右上角即可分享
微信分享提示