TELL_WAIT undefile

今天学习到《UNIX环境高级编程》程序清单8-7,遇到一个编译错误:TELL_WAIT, WAIT_PARENT, TELL_CHILD未定义。我在本书所附源代码中用下面这条命令找到了它们的定义文件(在apue.2e目录下执行):

grep -r TELL_WAIT *

这些函数定义在./apue.2e/lib/tellwait.c文件中。

我将这个文件复制到相应目录下,用下面这条命令编译文件:

gcc -o sample8_7 sample8_7.c error.c tellwait.c

成功。

开心一下。:)

时间: 2024-11-08 22:03:57

TELL_WAIT undefile的相关文章

Linux下运行《UNIX环境高级编程》undefined reference to `err_quit 编译出错的处理方法

错误信息: : undefined reference to `err_quit': undefined reference to `err_sys' 解决方法: 因为err_quit跟err_sys是作者自己定义的错误处理函数.所以最简单的解决办法是修改下apue.h文件,如下 /* * Our own header, to be included before all standard system headers. */ #ifndef _APUE_H #define _APUE_H #d

LINUX实现父子进程轮流修改文件的值

本例子是基于信号的同步机制实现父子进程轮流修改文件中的值. tatic volatile sig_atomic_t sigflag; static sigset_t newmask,oldmask,zeromask; static void sig_usr(int signo) { sigflag=1; } void TELL_WAIT(void) { if(signal(SIGUSR1,sig_usr)==SIG_ERR) perror("signal error"); if(sig

【APUE】Chapter8 Process Control

这章的内容比较多.按照小节序号来组织笔记的结构:再结合函数的示例带代码标注出来需要注意的地方. 下面的内容只是个人看书时思考内容的总结,并不能代替看书(毕竟APUE是一本大多数人公认的UNIX圣经). 8.2 Process Identifiers 1. unix system给系统分配进程pid采用的是delay reuse策略:即,刚用完被释放的pid不会马上分配给新的进程,目的是防止新进程错误使用与之前进程相同的ID(这块内容还没太懂,以后再看):但具体等多久不一定. 2. 有几个特殊的p

进程和课堂总结

2015.1.29 父进程等待一个子进程的终止,则它必须调用:wait函数.如果一个进程要等待父进程的终止,则可以向下面这样:缺点是浪费CPU时间while(getppid() != 1) sleep(1); IPC:进程间通信 int main(){ pid_t pid; if((pid = fork()) < 0) { err_sys("fork error"); } else if(pid == 0) { if((pid = fork()) < 0 ) { err_s

《Unix环境高级编程》读书笔记 第8章-进程控制

1. 进程标识 进程ID标识符是唯一.可复用的.大多数Unix系统实现延迟复用算法,使得赋予新建进程的ID不同于最近终止所使用的ID ID为0的进程通常是调度进程,也常被称为交换进程.它是内核的一部分,是系统进程. ID为1的进程通常是init进程,在自举过程结束时由内核调用.该进程负责在内核自举后启动一个Unix系统,它决不会终止,是一个普通的用户进程,但以超级用户特权运行. ID为2的进程是页守护进程,负责支持虚拟存储器系统的分页操作. #include <unistd.h> pid_t

10.信号

1.概念 信号提供了一种处理异步事件的方法. 不存在编号为0的信号,kill函数对信号编号0有特殊的应用.POSIX.1 将此种信号编号值称为空信号. 2.信号的相关动作 a.忽略此信号.大多数信号都可使用这种方式进行处理,但有两种信号却决不能被忽略,它们是SIGKILL和SIGSTOP.这两种信号不能不忽略的原因是:它们向超级用户提供了使进程终止和停止的可靠方法: b.捕捉信号.为了做到这一点,要通知内核在某种信号发生时调用一个用户函数.(SIGTERM是终止信号,kill命令传送的系统默认信

unix高级编程中的一个头文件 apue.h 与一个差错文件error.c 的内容

在查看unix高级编程中的代码时,如果我们编写书中的代码,发现一般都会报错,这是因为作者在写这本书时,他自己编写了一个头文件,跟一个差错处理文件,出来处理他自己的代码错误信息: 下面我们来看下代码的内容: 我实现第一个代码,关于文件的打开,实现 ls 命令的代码: #include "apue.h"#include <stdio.h>#include <dirent.h> int main(int argc, char *argv[]){ DIR *dp; st

APUE CH8 Process Control

今天的收获是: 1 温习了fork wait waitpid 2 通过tell_wait 的两个版本搞懂了进程竞争 3 了解了exec函数的不同区别,p , l ,v ,e 4 理解了real user ID / effective user ID / saved set-user ID ,并通过man程序分析了之间的相互转化 娱乐: 1 34集 狼牙棒 静妃机智逃过一劫,靖王被禁足,每场苏 被囚禁 悬镜寺 2 好声音 张磊夺冠 ,那英属 ,代表的是沉寂以久的 民谣, 杰伦太自信了,最后一首用黑

【APUE】Chapter14 Advanced I/O

14.1 Introduction 这一章介绍的内容主要有nonblocking I/O, record locking, I/O multiplexing, asynchronous I/O, the readv and writev, memory-mapped I/O 这一章是后面章节的基础,也就是说先当成基础记着,在后面的实操应用章节再去体会. 14.2 Nonblocking I/O "blocking"主要针对slow system call,含义是“the slow sy