apue
文章平均质量分 65
liuxuejiang158
做点笔记,省的百度不到。。。
展开
-
linux等待所有子进程的方法
while(wait(NULL)!=-1){}原创 2013-06-08 16:04:17 · 1854 阅读 · 0 评论 -
write的多进程/线程安全性
write系统调用将指定的内容写入文件中,但是当多个进程/线程同时write一个文件时是会出现写覆盖的情形。每个进程都有自己的缓冲区,write首先写入该缓冲区,系统flush后才将缓冲区内容写入文件,从而导致了多个进程之间的写操作是互不可见的,可能出现写覆盖。程序验证:#include#include#include#include#include#include#inc原创 2014-04-13 11:46:51 · 15545 阅读 · 0 评论 -
sigsuspend
int sigsuspend(const sigset_t *mask);//挂起进程直至信号发生man手册的解释: sigsuspend() temporarily replaces the signal mask of the calling process with the mask given by mask and then suspends the proces原创 2014-05-18 11:07:36 · 1659 阅读 · 0 评论 -
socketpair
int socketpair(int domain, int type, int protocol, int sockfd[2]); //创建未命名的全双工管道 domain只能为AF_UNIX,也就是限制在本地使用 type可以是SOCK_STREAM或SOCK_DGRAM,SOCK_STREAM相当于创建了双向流管道,管道的每一端都可以write或read,并且两端的数据流原创 2014-05-18 16:54:02 · 2804 阅读 · 0 评论 -
unix系统信号
原创 2013-06-25 16:09:01 · 943 阅读 · 0 评论 -
APUE API
now,i will wirite down something about API of UNIX/Linux. 采取不定时持续的方式做笔记。utime()函数可以结合open()的trunc选项将某人的文件截断并且不更改文件的修改时间。当进程不停的切换工作目录时,记住当前工作目录是重要的,内核只记住了当前工作目录的i_node,但是getcwd()可以提取当前工原创 2013-06-19 19:33:00 · 1226 阅读 · 0 评论 -
开启3个线程输出ABCABC...
每个线程轮询一个全局变量强制使线程看似串行执行,轮询耗资源较大:#include#include#include#include#includeusing namespace std;int i=0;//全局变量static int j=10;void* th_1(void* arg){ while(j>0){//还没有输出10次 while(i!=1)原创 2013-09-04 22:13:00 · 2486 阅读 · 0 评论 -
验证多个孩子进程进程socketpair竞争读
问题:当父进程创建了一个全双工管道socketpair,然后fork了两个孩子,这两个孩子都将进程这个无命名管道,若父进程往socketpair写数据,那么子进程谁接受到这个数据?验证结果是:只有一个孩子进程接收到数据,具体哪个孩子看系统负载情况#include#include#include#include#include#include#includeusing na原创 2013-10-19 11:30:48 · 1301 阅读 · 0 评论 -
线程fork进程
一个多线程进程的某个线程fork出一个子进程,那么子进程完整复制调用fork的线程,且子进程不会拥有原进程那么多的线程,这里出现一个潜在的死锁条件,就是子进程继承了父进程的互斥锁但是并不知道该互斥锁的状态,若该互斥锁以上锁且子进程再次加锁该互斥量,此时子进程将死锁。#include #include #include #include #include pthread_mute原创 2013-10-15 22:03:10 · 1959 阅读 · 0 评论 -
验证全双工管道两端同时写不会干扰
半双工管道只能一端写一端读逻辑清晰,但是全双工管道两端都可读可写,某些逻辑可能不那么清晰,比如两端同时写的时候数据是否相互会覆盖?下面验证这个问题,父进程和子进程同时写一个全双工管道socketpair并且都等待对方写完以后才读取数据。这里用了三个管道,一个全双工管道socketpair和两个半双工管道,全双工管道用于父子进程同时读同时写,半双工管道用于父子进程通知对方本方已经写了全双工管道。原创 2013-10-16 09:57:36 · 1895 阅读 · 0 评论 -
dup2
dup2(int fd1,int fd2)//将fd1描述符复制到fd2,这样fd1和fd2都将指向同一文件表项,那么对这些描述符的操作实际是对这个文件表项的操作,这里举个例子:将一个打开的文件描述符fd复制到标准输入STDIN_FILENO,那么一切从标准输入读取数据的操作等将从fd的文件表项读取数据程序dup.cpp#include //这里空一个的目的是:cin是使用空白(空格,原创 2013-10-15 11:03:07 · 1278 阅读 · 0 评论 -
共享内存mmap
mmap的是将文件指定的区域映射到内存中,操作内存原创 2014-04-13 18:05:18 · 2079 阅读 · 0 评论