专题:apue
共31篇相关文章

apue 打印服务代码中哪个错误会导致打印输出问题?
在看 apue 第 21 章 与网络打印机通信一章时,发现一段关于链表操作的代码有问题,现在摘出来让大家 review 一下。先上代码: printd.c 这是打印服务的源代码,在打印时,用户通过 print 命令提交待打印的文件,prin...

apue文件中的空洞是如何通过来的?
空洞的概念 linux 上普通文件的大小与占用空间是两个概念,前者表示文件中数据的长度,后者表示数据占用的磁盘空间,通常后者大于前者,因为需要一些额外的空间用来记录文件的某些统计信息或附加信息、以及切分为块的数据信息 (通常不会占用太多)。...

Unix时间日期例程之间是怎样的复杂关系?
GMT 和 UTC 时间有何区别?Unix 时间例程为何不处理闰秒?系统时区是如何设置的?哪些时间例程受夏时制影响?localtime 和 gmtime 是否共享内部存储区?strftime 获取第几周使用的 %U%V%W 有何区别?l...
![如何精确测量[apue]管道在单位时间内的原子级写入量?](/view/img/nopic.png)
如何精确测量[apue]管道在单位时间内的原子级写入量?
PIPE_BUF定义了管道可原子写入的数据量,在我的系统(CentOS 6.7)上这个值是4096,写了个程序验证了一下,通过三个维度来考察: N: 生产者数量 M:每个生产者的生产次数 P:每次写入的块数(每块大小为PIPE_BUF) 实...

如何正确使用apue中的dup2函数实现文件描述符的复制?
管道与重定向常常需要使用dup与dup2复制句柄,其中dup2又较为常用,但是使用dup2有几个小坑需要注意。 int dup2(int oldfd, int newfd); man手册页上是这样讲的,oldfd是想要复制的句柄,newfd...
![如何用poll检测管道断开[apue]实现疑问?](/view/img/nopic.png)
如何用poll检测管道断开[apue]实现疑问?
一般使用 poll 检测 socket 或标准输入时,只要指定 POLLIN 标志位,就可以检测是否有数据到达,或者连接断开: 1 struct pollfd fds[3]; 2 fds[0].fd = STDIN_FILENO; 3 fd...
![popenpclose在[apue]中应用时,如何避免问题?](/view/img/nopic.png)
popenpclose在[apue]中应用时,如何避免问题?
当我们需要将输出作为标准输入传递给一个命令,或者将一个命令的输出作为标准输入来读取, 一般会想到使用pipe与fork相结合的方式,来重定向标准输入输出给指定命令。 popenpclose 帮助我们简化了上述工作,只需要调用: FILE...

popenpclose在apue中如何正确使用避免常见错误?
问题请看这里: [apue] 使用 popenpclose 的一点疑问 当时怀疑是pclose关闭了使用完成的管道,因此在pclose之前加一个足够长的sleep,再次观察进程文件列表: 哈哈,这下都能看到了。同时可以看出来子进程more...

apue中等待子进程都有哪些方法或技巧?
前言 谈到等待子进程,首先想到的就是 SIGCHLD 信号与 wait 函数族,本文试图厘清二者的方方面面,以及组合使用时可能的坑。 单独使用 SIGCHLD 的场景 使用 signal 捕获信号 下面是一段典型的代码片段: 1 #incl...

FIFO:这非文件的文件究竟是什么?
众所周知,FIFO中文译为命名管道,是PIPE的升级版。而PIPE是管道,系统提供的一种进程间通讯方式,FIFO与PIPE有以下方面不同: 1) FIFO需要先在文件系统创建(mkfifo),之后使用文件接口操作(openclosere...

如何通过文件记录锁实现父子进程间的同步?
父子进程间交互执行是指用一种同步原语,实现父进程和子进程在某一时刻只有一个进程执行,之后由另外一个进程执行,用一段代码举例如下: SYNC_INIT(); int i=0, counter=0; pid_t pid = fork (); i...

apue中syslog引起的accept错误如何解决?
前几天在看apue第16章关于socket的例子,就是一个非常典型的socket服务器,关键代码如下: 1 void serve (int sockfd) 2 { 3 int ret; 4 int clfd; 5 int status; 6...

如何深入理解并高效处理TCP中的紧急数据(OOB)应用场景?
前言 在上大学的时候,我就听说了 OOB 这个概念(Out Of Band 带外数据,又称紧急数据)。当时老师给的解释就是在当前处理的数据流之外的数据,用于紧急的情况。然后就没有然后了…… 毕业这么多年了,回想一下,还真是没有接触过 OOB...

Solaris pipe为何如此神奇,能实现处理?
说到 pipe 大家可能都不陌生,经典的pipe调用配合fork进行父子进程通讯,简直就是Unix程序的标配。 然而Solaris上的pipe却和Solaris一样是个奇葩(虽然Solaris前途黯淡,但是不妨碍我们从它里面挖掘一些有价值的...

传递文件句柄为何引发如此惨烈的血案?
apue 上讲 Solaris 系统是可以在进程间通过 STREAMS 管道传递文件句柄的。 书上讲道:“在技术上,发送进程实际上向接收进程传送一个指向一打开文件表项的指针,该指针被分配存放在接收进程的第一个可用描述符项中。” 个人非常感兴...
