- 博客(8)
- 资源 (2)
- 收藏
- 关注
原创 [unix]system函数的一个实现
代码来源 unix环境高级编程 第三版 一书 这个system函数实现有缺陷 具体参详10.18节 #include #include #include #include int system(const char *cmdstring) { pid_t pid; int status; struct sigaction ignore,saveintr,savequit; s
2017-12-31 11:57:28 905
转载 [unix]sigsuspend函数保护代码临界区 使其不被特定信号中断
#include #include /** * 1 保护代码临界区 使其不被特定信号中断 * 2 当sigsuspend返回时 它将信号屏蔽字设置为调用它之前当值 * SIGINT信号将被阻塞。因此将信号屏蔽恢复为之前保存当值oldmask * 3 在调用sigsuspend时 将SIGUSR1信号加到了进程号屏蔽字中, * 所以当运行该信号处理程序时,得知信号屏蔽字已改变。可见,在
2017-12-29 17:32:38 222
转载 [unix]信号处理非局部跳转sigsetjmp函数和siglongjmp实例
#include <apue.h> #include <setjmp.h> #include <time.h> #include <errno.h>static void sig_usr1(int); static void sig_alrm(int); static sigjmp_buf jmpbuf; static volatile sig_atomic_t canjump; void pr_m
2017-12-28 17:45:20 299
转载 [unix]SIGQUIT信号堵塞的测试
#include <apue.h> #include <errno.h>static void sig_quit(int); int main(void) { sigset_t newmask, oldmask, pendmask; if(signal(SIGQUIT,sig_quit) == SIG_ERR) err_sys("can't catch SIGQUIT
2017-12-27 14:47:09 326
转载 【unix】alarm,pause函数 实现sleep函数的一些问题(SIGALRM信号跟其他信号如(SIGINT))交互的问题
#include #include static jmp_buf env_alrm; /* version 2 */ static void sig_alrm(int signo) { longjmp(env_alrm,1); /* versin 2 */ /* nothing to do , just return to wake up the pause (version 1
2017-12-18 17:02:47 416
转载 [UNIX]signal函数捕捉SIGCLD信号
#include #include static void sig_cld(int); int main() { pid_t pid; if(signal(SIGCLD,sig_cld) == SIG_ERR) perror("signal error"); if((pid = fork()) < 0) perror("fork error"); else if(pid
2017-12-14 17:49:33 315
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人