天天看点

unix环境高级编程(中文第三版)堪误

[1]. 106页,myftw函数中,位于起始部位,错误语句“malloc PATH_MAX + 1 bytes ({Flgure 2.16})”,正确的应该是“malloc PATH_MAX + 1 bytes ({Figure 2.15})”,英文原版中也错了。

[2]. 201页,"但新程序从调用进程继承了的下列属性:"这句话翻译得乱七八糟,根据英文原意和上下文语境,应该翻译成"而且新程序还从调用进程继承了以下这些属性:"

[3].  207页,错误语句“at程序做的第一件事就是降低特权,以用户特权运行。它调用setuid函数把有效用户ID设置为实际用户ID”,正确的应该是“at程序做的第一件事就是降低特权,以用户特权运行。它调用seteuid函数把有效用户ID设置为实际用户ID” 。

[4].  207页,错误语句“at命令调用setuid函数把有效用户ID设为root,因为setuid的参数等于保存的设置用户ID”,正确的应该是“at命令调用seteuid函数把有效用户ID设为root,因为seteuid的参数等于保存的设置用户ID”。

[5].  207页,错误语句“修改文件从而记录了将要运行的命令以及它们的运行时间以后,at命令通过调用seteuid,把有效用户ID设置为用户ID”,正确的应该是“修改文件从而记录了将要运行的命令以及它们的运行时间以后,at命令通过调用seteuid,把有效用户ID设置为我们的用户ID”。

[6]. 259页,10.4节"不可靠的信号"第一段中,"同时,进程对信号的控制能力也很差,它能捕捉信号或忽略它"翻译的莫名其妙,应该翻译成"同时,进程对信号的控制能力也很差,它只能捕捉信号或忽略它"

[7]. 328页,main函数中,倒数第2行"printf("can't lock mvtex again:%s\n",strerror(err));"中,"mutex"单词拼写错误

[8]. 333页,第一行中,"因为互斥量必须在锁定以后才能计算条件"翻译欠妥,个人觉得翻译成"因为必须在互斥量锁定以后才能计算条件"更加顺畅

[9]. 346页,最后一段最后一句"但是,即使不使用健壮的互斥量,也可以只检查成功或者失败"翻译的莫名其妙,根据原文意思应该翻译成"而当我们不使用健壮的互斥量时,就可以只检查成功或者失败"

[10]. 358页,12.5小节最后一段中,"如果信号处理程序在线程执行getenv_r时中断了该线程,这时我们已经占有加锁的env_mutex,这样其他线程试图对这个互斥量的加锁就会被阻塞,最终导致线程进入死锁状态"翻译错误,根据原文意思应该翻译为"如果信号处理程序在线程执行getenv_r时中断了该线程,这时我们已经占有加锁的env_mutex,所以下一个试图对这个互斥量的加锁就会被阻塞,最终导致线程进入死锁状态"

[11]. 392页,倒数第二段,"上面提到了两种类型的锁:共享读锁(L_RDLCK)和独占性写锁(L_WRLCK)。"中,两个宏名写错,正确应该是"F_RDLCK"和"F_WRLCK"

[12]. 398页,最后一段中,"un_lock(fd, 0, SEEK_END);",根据前文中对un_lock函数的定义,这里对该函数的调用显然少了最后一个参数,所以正确应该是 "un_lock(fd, 0, SEEK_END,0);". 英文原版和中文翻译中都存在该错误。

[13]. 404页,第二段中,错误语句"POSIX异步I/O是Single UNIX Specification中是可选设施",正确的应该是"POSIX异步I/O是Single UNIX Specification中的可选设施"

[14]. 408页,14.4.2中第一行,错误语句"但是程序员接口有所不同",正确的应该是"但是程序接口有所不同"

[15]. 410页,第一段中,错误语句"信号机构提供了一种以异步形式通知某种事件已发生的方法",正确的应该是"信号提供了一种以异步形式通知某种事件已发生的方法"

[16]. 446页,第一段整个翻译都有问题(ps:特地翻看了一下中文第二版,发现第二版原本这里是翻译的很合理的,显然第三版这里是换了一个菜鸡翻译),合理的翻译应该是"一旦已经用mkfifo或者mkfifoat创建了一个FIFO,就可以用open打开它。其实,一般的文件I/O函数(close、read、write、unlink等)都可用于FIFO"

[17]. 465页,15.9小节最后一段中,错误语句"最后两个实例说明了在多个无关进程之间如何使用共享存储段",正确的应该是"最后两个实例说明了在多个相关进程之间如何使用共享存储段"

[18]. 465页,15.10小节第一段第一句, “POSIX信号量机制是3种IPC机制之一,3种IPC机制源于POSIX.1的 实时扩展”这句翻译太渣了,原文是"The POSIX semaphore mechanism is one of three IPC mechanisms that originated with the real-time extensions to POSIX.1.",对照原意,再联系上下文,应该翻译为"POSIX信号量是3种源自POSIX.1实时扩展的IPC机制中的其中一种"

(如果有发现,持续更新中)