
APUE
Error Man
我是菜逼
展开
-
localtime产生 SIGABRT 信号
原因,localtime 是线程不安全的函数,应改用 localtime_r原创 2020-06-17 10:58:43 · 325 阅读 · 0 评论 -
APUE 第三版 程序 16-16&16-17 ruptimed (简单的TCP,C/S 实例)
如有错误,欢迎批评指正,本人也是才学APUE的菜鸟实验的系统是 Ubuntu 18.04代码先贴一下,和书上一样,没啥改变 ,主要是为了没书的时候看:connect_retry.c//// Created by hjm on 2020/5/3.//#include "apue.h"#include <sys/socket.h>#define MAXSLEEP 12...原创 2020-05-03 16:02:32 · 387 阅读 · 0 评论 -
APUE 第三版 程序 10-20 (sigsetjmp 与 siglongjmp,及程序的问题??)
如有错误,欢迎批评指正,本人也是才学APUE的菜鸟实验的系统是 Ubuntu 18.04 书中在这一节一开始就提到了一句话:当捕捉到一个信号时,进入信号捕捉函数,此时当前信号被自动地加到进程的信号屏蔽字中。 接着按照书上的代码:#include "apue.h"#include <errno.h>...原创 2020-04-26 12:19:42 · 255 阅读 · 0 评论 -
信号集与信号屏蔽字 + APUE 第三版 程序10-15(信号设置与 sigprocmask 实例)
如有错误,欢迎批评指正,本人也是才学APUE的菜鸟 信号集:可以理解为是一个整型,其每一个二进制位都代表一种信号。1 表示在这个信号集中,0 表示不在这个信号集中。唯一需要注意的一点:由于不存在编号为 0 的信号,所以信号编号为 i 的信号对应的其实是信号集中的第 i - 1 的二进制位。所以其四个操作函数:sigemptyset(sigset_t *set)sigfills...原创 2020-04-25 22:53:48 · 236 阅读 · 0 评论 -
APUE 第三版 程序10-10 带时间限制调用 read (alarm解低速系统调用阻塞)
如有错误,欢迎批评指正,本人也是才学APUE的菜鸟程序代码:#include "apue.h"static void sig_alrm(int);int main(void) { int n; char line[MAXLINE]; if(signal(SIGALRM, sig_alrm) == SIG_ERR) err_sys("signal(SIGALRM) error"...原创 2020-04-25 18:03:10 · 300 阅读 · 7 评论 -
APUE 第三版 程序 10-8,10-9 (sleep2 函数的缺陷)
如有错误,欢迎批评指正,本人也是才学APUE的菜鸟/* sleep2 Code*/#include <setjmp.h>#include <signal.h>#include <unistd.h>static jmp_buf env_alrm;static void sig_alrm(int signo) { longjmp(env_alrm...原创 2020-04-25 13:40:10 · 407 阅读 · 0 评论 -
APUE第三版 程序 10-2 (捕捉 SIGUSR1 和 SIGUSR2 的简单程序) +自己沙掉踩得坑(注意缓冲方式)
程序代码:#include "apue.h"static void sig_usr(int); // on handler for both signalsint main(void) { if(signal(SIGUSR1, sig_usr) == SIG_ERR) err_sys("can't catch SIGUSR1"); if(signal(SIGUSR2, sig_u...原创 2020-04-24 20:53:37 · 241 阅读 · 0 评论 -
APUE 第三版 程序 9-12 (创建孤儿进程组)
孤儿进程组的定义:该进程组的每个成员的父进程要么是该组的成员,要么在其它会话中。 孤儿进程组的特点:如果一个进程组包含一个或一个以上的停止的进程,当该进程组变成孤儿进程组时,该进程组中的每一个进程都会接收到一个 SIGHUP (挂掉)信号,然后紧接着会接收到 SIGCONT (继续)信号。但是对挂断信号的系统默认动作是终止该进程。所以,如果要继续执行子进程,就必...原创 2020-04-24 15:51:06 · 213 阅读 · 0 评论 -
APUE 第三版 程序 8-20 (解释器文件)
解释器的形式是:#! pathname[optinal-argument]解释器文件是文本文件! 它以下列行的形式开始:#! /bin/sh其中,/bin/sh 就是解释器。需要注意的一点是:解释器文件需要有可执行权限!!//书中代码:#include "apue.h"#include <sys/wait.h>int main(void) { pid_...原创 2020-04-22 15:55:13 · 249 阅读 · 0 评论 -
APUE 第三版 程序 8-8 (两次 fork避免僵尸进程) + 我的ubuntu从字符界面回到图像界面居然是 ctrl+alt+f2
今天在测试 APUE 对僵尸进程采用两个 fork 的技巧手段。其代码是这样的:#include "apue.h"#include <sys/wait.h>int main(void) { printf("father pid = %ld\n", (long)getpid()); pid_t pid; if((pid = fork()) < 0) { err...原创 2020-04-21 21:20:36 · 268 阅读 · 2 评论 -
APUE第三版 程序 5-15 (内存流的写入与冲洗,何时追加 null)
如有错误,欢迎批评指正,本人也是才学APUE的菜鸟先贴上代码:#include "apue.h"#define BSZ 48int main() { FILE *fp; char buf[BSZ]; memset(buf, 'a', BSZ - 2); buf[BSZ - 2] = '\0'; buf[BSZ - 1] = 'X'; if((fp = fmemopen(...原创 2020-04-20 14:19:44 · 302 阅读 · 0 评论 -
APUE第三版 程序 4-9(umask 与文件模式创建屏蔽字,文件创建时的访问权限)
如有错误,欢迎批评指正,本人也是才学APUE的菜鸟先贴上代码:#include "apue.h"#include <fcntl.h>#define RWRWRW (S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH)int main(void) { if(creat("my1.txt", RWRWRW) &...原创 2020-04-18 09:51:02 · 263 阅读 · 0 评论 -
APUE第三版 程序 4-8(文件访问权限与 access 函数)
如有错误,欢迎批评指正,本人也是才学APUE的菜鸟先贴上程序代码:#include "apue.h"#include <fcntl.h>int main(int argc, char *argv[]) { if(argc != 2) err_quit("usage: a.out <pathname>"); if(access(argv[1], R_OK)...原创 2020-04-17 21:55:05 · 232 阅读 · 0 评论 -
APUE第三版 程序 3-11(利用 fcntl 查看已打开文件的文件状态标志)
先贴的程序代码:#include "apue.h"#include <fcntl.h>int main(int argc, char *argv[]) { int val; if(argc != 2) err_quit("usage: 3-11 <descriptor#>"); if((val = fcntl(atoi(argv[1]),F_GET...原创 2020-04-16 12:30:37 · 247 阅读 · 0 评论 -
apue.h 安装与使用
下载: src.3e.tar.gz解压安装相应库: sudo apt-get install libbsd-dev进入到apue.3e目录,执行: makesudo cp ./include/apue.h /usr/include/sudo cp ./lib/libapue.a /usr/local/lib/这里以书中的第一个例子为例来进行编译:编译时链接到相应库: gcc -o 1...原创 2020-04-14 15:41:38 · 438 阅读 · 0 评论