- 博客(24)
- 收藏
- 关注
原创 线程同步之条件变量
与互斥锁不同,条件变量是用来等待而不是用来上锁的。条件变量用来自动阻塞一个线程,直到某特殊情况发生为止。通常条件变量和互斥锁同时使用。条件变量使我们可以睡眠等待某种条件出现。条件变量是利用线程间共享的全局变量进行同步的一种机制,主要包括两个动作:一个线程等待"条件变量的条件成立"而挂起;另一个线程使"条件成立"(给出条件成立信号)。条件的检测是在互斥锁的保护下进行的。如果一个条件为
2016-08-30 18:20:34 604
原创 信号同步之互斥锁(pthread_mutex_init,pthread_mutex_lock,pthread_mutex_unlock)
一、互斥锁互斥量从本质上说就是一把锁, 提供对共享资源的保护访问。 1. 初始化: 在Linux下, 线程的互斥量数据类型是pthread_mutex_t. 在使用前, 要对它进行初始化: 对于静态分配的互斥量, 可以把它设置为PTHREAD_MUTEX_INITIALIZER, 或者调用pthread_mutex_init. 对于动态分配的互斥量,
2016-08-30 18:08:57 13309
原创 线程同步之信号量(sem_init,sem_post,sem_wait)
信号量和互斥锁(mutex)的区别:互斥锁只允许一个线程进入临界区,而信号量允许多个线程同时进入临界区。不多做解释,要使用信号量同步,需要包含头文件semaphore.h。主要用到的函数:int sem_init(sem_t *sem, int pshared, unsigned int value);,其中sem是要初始化的信号量,pshared表示此信号量是在进程间
2016-08-30 17:08:30 16592 2
原创 异步io
1何为异步IO(1)几乎可以认为:异步IO就是操作系统用软件实现的一套中断响应系统。(2)异步IO的工作方法是:我们当前进程注册一个异步IO事件(使用signal注册一个信号SIGIO的处理函数),然后当前进程可以正常处理自己的事情,当异步事件发生后当前进程会收到一个SIGIO信号从而执行绑定的处理函数去处理这个异步事件。2涉及的函数:(1)fcntl(F_GETFL、F_SETF
2016-08-29 20:35:24 546
原创 poll读取键盘鼠标,多路复用io
poll描述概要: #include int poll(struct pollfd *fds, nfds_t nfds, int timeout);The set of file descriptors to be monitored is specified in the fdsargument, which is an array
2016-08-29 20:21:02 537
原创 O_NONBLOCK,fcntl 非阻塞io读取键盘鼠标
1.fcntl #include #include int fcntl(int fd, int cmd, ... /* arg */ ); The file status flags and their semantics are described in open(2). F_GETFL (void) Get t
2016-08-29 20:14:36 3497
原创 Linux下alarm,sigaction,pause
/* #include unsigned int alarm(unsigned int seconds); RETURN VALUE alarm() returns the number of seconds remaining until any previously scheduled alarm was due to be delivered
2016-08-29 11:33:33 754
原创 Linux下信号signal
//signal函数绑定一个捕获函数后会自动执行绑定的捕获函数,//并且把信号编号作为传参传递给捕获函数/* #include typedef void (*sighandler_t)(int); sighandler_t signal(int signum, sighandler_t handler); RETURN VALUE signal()
2016-08-29 10:23:43 347
转载 Ubuntu中如何切换到超级用户(root)及在VMware虚拟机中Linux在虚拟终端之间切换的方法
1.Ubuntu中如何切换到超级用户(root)我们知道在其他linux操作系统中(如红帽操作系统)普通权限的用户想切换到root下,只需输入su命令,系统会提示输入root用户的密码,只要我们正确输入即可。然而在Ubuntu中我们并不清楚root的密码是多少(还曾以为自己安装时没记住)。其实在默认的情况下,Ubuntu是没有超级用户(superuser, root)的。但
2016-08-29 09:08:15 9786
转载 Linux前台后台进程切换(转载)
linux前后台进程切换(转) (2012-05-10 12:31:20)转载▼标签: 杂谈分类: linux操作系统from:http://blog.csdn.net/java3344520/article/details/7324874Linux 前后台进程切换当你用shell启动一个程序时,往往他
2016-08-29 08:45:14 8328
原创 rand获取随机数(转载)+测试代码(原创)
1 srand(设置随机数种子) 相关函数 rand 表头文件 #include 定义函数 void srand (unsign
2016-08-27 16:20:36 735
原创 Linux下时间编程(综合知识+综合编程):time,ctime,strftime,localtime,gmtime,gettimeofday
一:strftime() 函数将时间格式化NAME strftime - format date and timeSYNOPSIS #include size_t strftime(char *s, size_t max, const char *format, const struct tm
2016-08-27 15:46:38 1022
原创 opendir,readir对目录的操作+原创测试代码
1. opendir()头文件 #include #include函数原型 DIR* opendir (const char * path ); (获取path子目录下的所由文件和目录的列表,如果path是个文件则返回值为NULL)功能 打开一个目录,在失败的时候返回一个空的指针。返回值(DIR) DI
2016-08-27 09:26:08 1411
原创 chmod更改文件权限+测试代码
变更文件或目录的权限。在UNIX系统家族里,文件或目录权限的控制分别以读取,写入,执行3种一般权限来区分,另有3种特殊权限可供运用,再搭配拥有者与所属群组管理权限范围。您可以使用chmod指令去变更文件与目录的权限,设置方式采用文字或数字代号皆可。符号连接的权限无法变更,如果您对符号连接修改权限,其改变会作用在被连接的原始文件。权限范围的表示法如下: u:User,即文件或目录的拥有者。
2016-08-27 09:20:25 940
原创 access测试文件是否可读/可写
Linux内核总是根据进程的有效用户ID和有效组ID来决定一个进程是否有权访问某个文件。因此,在编写调整用户ID的程序时,在读写一个文件之前必须明确检查其用户是否原本就有对此文件的访问权限。为了实现这种确认,需要使用access函数。一般形式为;#includeint access(const char *pathname,int mode);其中,pathname
2016-08-27 09:12:21 1006
原创 stat获取文件属性+原创测试程序
stat, fstat, lstat - get file status ---------------------------------------------------- #include #include #include int stat (const char
2016-08-27 09:08:14 1014
转载 fopen函数和fread函数、fwrite函数
fopen函数和fread函数、fwrite函数fopen(打开文件)相关函数 open,fclose表头文件 #include定义函数 FILE * fopen(const char * path,const char * mode);函数说明 参数path字符串包含欲打开的文件路径及文件名,参数mode字符串则代表着流形态。mode有下列几种形态字符串:r 打开只读
2016-08-25 17:25:04 647
原创 用dup,测试标准输出的重定位
系统调用dup和dup2能够复制文件描述符。dup返回新的文件文件描述符(没有用的文件描述符最小的编号)。dup2可以让用户指定返回的文件描述符的值,如果需要,则首先接近newfd的值,他通常用来重新打开或者重定向一个文件描述符。他的原型如下:#include int dup(int oldfd);int dup2(int oldfd,int newfd);
2016-08-25 10:06:11 644
原创 一个基础的文件读写(复习)
//一个基础的文件读写 #include #include #include #include #include #include int main(int argc,char *argv[]) { int fd=-1; int ret=-1;
2016-08-24 16:08:37 240
转载 Linux可重入函数
最近,项目要求可能需要做博通的交换芯片的驱动程序,涉及到多用户同时进行操作,和大量的数据处理,因此在进行代码架构的时候需要进行前期简单的验证设计。考虑到一点就是程序设计的可重入性。经过简单的搜索,在维基百科和其他朋友的帖子里找到了相关概念。为了帮助自己今后理解,特地将此概念加上自己的理解整理在此。一、维基百科解释 1 若一个程序或子程序可以安全的被并行执行,则称其为可重入(reen
2016-08-23 10:10:11 321
转载 lseek计算文件长度
#include stdio.h>#include stdlib.h>#includesys/types.h>#includesys/stat.h>#includefcntl.h>#includeunistd.h>int main(int argc,char *argv[]){ int fd,length;
2016-08-23 07:36:54 936
转载 open函数的flag详解
2.1.文件读写权限 (1)linux中文件有读写权限,我们在open打开文件时也可以附带一定的权限说明(譬如O_RDONLY就表示以只读方式打开,O_WRONLY表示以只写方式打开,O_RDWR表示以可读可写方式打开);当我们在open文件时附带了某种权限后,打开的文件就只能按照该权限来操作。2.2.更改文件内容 (1)当我们open已经存在并且内部有内容的文件会出现4种情况
2016-08-22 20:30:16 1824
转载 Linux文件或目录的读,写,执行权限
Linux文件或目录的读,写,执行权限2013-04-10 19:03 8871人阅读 评论(0) 收藏 举报 分类:操作系统(linux)(16) 快速理解Linux文件的权限,查看Permissions, important and tricky!Unix permissions concern who c
2016-08-22 19:27:12 802
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人