[apue] 书中关于伪终端的一个纰漏】的更多相关文章

在看 apue 第 19 章伪终端第 6 节使用 pty 程序时,发现“检查长时间运行程序的输出”这一部分内容的实际运行结果,与书上所说有出入. 于是展开一番研究,最终发现是书上讲的有问题,现在摘出来让大家评评理. 先上代码 pty.c pty_fun.c 这是书上标准的 pty 程序,简单说起来就是提供一个伪终端给被调用程序使用,例如 pty prog arg1 arg2 相当于在新的伪终端上执行 prog arg1 arg2 从而可以避免一些直接执行 prog 带来的问题. 19.6 节重点…
伪终端是指对于一个应用程序而言,他看上去像一个终端,但事实上它并不是一个真正的终端. 进程打开伪终端设备,然后fork.子进程建立一个新的会话,打开一个相应的伪终端从设备.复制输入.输出和标准错误文件描述符,调用exec,子进程从设备编程伪终端. 伪终端能像终端一样,但是无意义的函数调用如改变波特率.发送中断符.设置奇偶校验将被忽略. 伪终端可以做输入和输出. posix_opent函数提供了一种可移植的方法来打开下一个可用伪终端主设备 #include <stdlib.h> #include…
今天看unix环境高级编程时,随着书上的源码打了一遍,编译时提示 toll函数未定义, 找了半天(恕我对上下文不了解).看了英文版和源代码文件才知道, 中文版打印错了: toll => atol 其实书中的错误地方不少.…
本文介绍了linux中伪终端的创建,介绍了终端的回显.行缓存.控制字符等特性,并在此基础上解释和模拟了telnet.SSH开启远程会话的过程. 一.轻量级远程登录 之前制作的一块嵌入式板子,安装了嵌入式linux操作系统,可以通过串口(Console)登录.为了方便使用,需要寻找通过网线远程登录的方法.最初的想法是SSH,不过板子的ROM太小,存不了体积庞大庞大的OpenSSH套装.后来换用了telnet,直接拿busybox的telnetd做服务器,效果很好. 后来有一天,发现了Linux中有…
1.综述 伪终端对于一个应用程序而言,看上去像一个终端,但事实上伪终端并不是一个真正的终端.从内核角度看,伪终端看起来像一个双向管道,而事实上Solaris的伪终端就是用STREAMS构建的.伪终端总是成对地使用的,就好像是个管道的两端.一端的设备称为"主设备"(master),另一端的设备称为"从设备"(slave),每一对伪终端设备,例如/dev/ptys0和/dev/ttys0,就好像是通过一个管道连在一起,其"从设备"一端与普通的终端设备…
本来是搜pthread的相关资料,看blog发现很多linux程序员都看的一本神书<APUE>,里面有系统的两章内容专门讲pthread(不过是用c语言做的代码示例,这个不碍事,还是归到原来linux c++分类中了),决定把这本书打印出来,过一下这两章内容.这个系列后面的日志会根据APUE书中的内容来. 这篇日志说的内容与APUE没有直接关系,但是却是由APUE引发的. 背景是这样的: (1)对于我这个只在windows下用vs等IDE写过一些c程序,不知道gcc是干啥的人来说,在unix下…
转:http://blog.sina.com.cn/s/blog_735da7ae0102v2p7.html 终端tty.虚拟控制台.FrameBuffer的切换过程详解 Framebuffer Driver     Linux console    系统控制台是一个接收所有内核消息和警告,同时用于单用户模式登陆的设备.several devices can be used as system console: a [8]virtual terminal, [9]serial port, [10…
关于apue.3e中apue.h的使用 近来要学一遍APUE第三版,并于此开博做为记录. 先下载源文件: # url: http://http//www.apuebook.com/code3e.html curl -O http://www.apuebook.com/src.3e.tar.gz tar -zxvf src.3e.tar.gz cd apue.3e ls 从上面ls的结果看,其实完全看不明白这些目录与APUE书中代码的关系,或者有些目录可以猜测出是那一章.不过有个小技巧: ls -…
第十篇(书中 2.9~2.13节 内容) 好的 2.9节 开始! 总结一下重点: 1.之前通过 ImageLoader 类加载图片的方式,改成了 RES.getResByUrl 的方式. 跟着做: 重点1:之前通过 ImageLoader 类加载图片的方式,改成了 RES.getResByUrl 的方式. 这是我之前加载图片的方式. 我在日记 第八篇 也有提到.看来书中还是提供了更加新颖的方式. 好,那么我就按照书中所说的新方式,试一下. 好的,运行成功,接下来对比一下两种方式的区别. 为了更相…
最近在重温K&R的C语言圣经,第二章中的练习题2-2引起了我的注意. 原题是: Write a loop equivalent to the for loop above without using && or ||. 题目里说的for循环是下面这个: ; i < lim- && (c=getchar()) != '\n' && c != EOF; ++i) s[i] = c; 不能用&&和||运算符,又要与for循环中的3个条…