读书时间 05/28/2011 -2
2011-05-29 06:25
344 查看
《Linux编程技术详解》 杜华 -- 续
1. 带日志的Daemon
int main(int argc, char **argv) {
int i=0;
daemon(0,0);
openlog(argv[0], LOG_CONS | LOG_PID, LOG_USER);
for(i=0;i<100;i++) {
sleep(1);
syslog(LOG_INFO, "%d, log info test", i);
}
closelog();
return 0;
}
2. alarm
[root@localhost ch08]# cat p8.5.alarm.c
#include <stdio.h>
#include <sys/types.h>
#include <sys/wait.h>
#include <unistd.h>
int main() {
int pid, wait_pid, status, i;
for(i=1;i<5;i++) {
pid=fork();
if(pid<0) {
perror("fork!");
return -1;
} else if(pid==0) {
printf("Child process(pid:%d), the process will be terminated in %d seconds./n", getpid(), i);
alarm(i);
pause();
}
}
while((wait_pid=wait(&status)) && wait_pid!=-1) {
if(WIFSIGNALED(status)) {
printf("process id: %d Received SIG : %d exit/n", pid, WTERMSIG(status));
}
if(WIFEXITED(status)) {
printf("process id: %d exit code : %d/n", pid, WEXITSTATUS(status));
}
}
return 0;
}
3. pipe
* 管道仅存在于父子或兄弟之间
* 命名管道可用于其它process之间
4. POSIX IPC
也就是System V IPC
包含:
消息队列
信号量Sephamore
共享内存
1. 带日志的Daemon
int main(int argc, char **argv) {
int i=0;
daemon(0,0);
openlog(argv[0], LOG_CONS | LOG_PID, LOG_USER);
for(i=0;i<100;i++) {
sleep(1);
syslog(LOG_INFO, "%d, log info test", i);
}
closelog();
return 0;
}
2. alarm
[root@localhost ch08]# cat p8.5.alarm.c
#include <stdio.h>
#include <sys/types.h>
#include <sys/wait.h>
#include <unistd.h>
int main() {
int pid, wait_pid, status, i;
for(i=1;i<5;i++) {
pid=fork();
if(pid<0) {
perror("fork!");
return -1;
} else if(pid==0) {
printf("Child process(pid:%d), the process will be terminated in %d seconds./n", getpid(), i);
alarm(i);
pause();
}
}
while((wait_pid=wait(&status)) && wait_pid!=-1) {
if(WIFSIGNALED(status)) {
printf("process id: %d Received SIG : %d exit/n", pid, WTERMSIG(status));
}
if(WIFEXITED(status)) {
printf("process id: %d exit code : %d/n", pid, WEXITSTATUS(status));
}
}
return 0;
}
3. pipe
* 管道仅存在于父子或兄弟之间
* 命名管道可用于其它process之间
4. POSIX IPC
也就是System V IPC
包含:
消息队列
信号量Sephamore
共享内存
相关文章推荐
- 读书时间 05/08/2011 Windows Programming V2
- 读书时间 05/25/2011 Linux C/C++ 孤儿进程
- 读书时间 05/28/2011 Linux编程技术详解
- EXTJS 日期时间转换 Mon Apr 25 01:00:00 UTC+0800 2011 转成 Y-m-dTH:i:s 2011-4-28T18:02:00
- EXTJS 日期时间转换 Mon Apr 25 01:00:00 UTC+0800 2011 转成 Y-m-dTH:i:s 2011-4-28T18:02:00
- NetBeans 时事通讯(刊号 # 144 - Apr 28, 2011)
- Godaddy 主机开通SSH的方法 2011-05-06
- 读书时间 05/29/2011 - 2
- JS工作随笔 05 JS格式化Thu May 12 2016 08:00:00 GMT+0800 (中国标准时间)
- '2011-05-18' 等价于'2011-05-18 00:00:00' 等价于'2011-05-17 23:59:59'
- 读书时间《深入浅出Android》 2010-12-15
- #读书心得#巧用时间读书的小方法
- 程序猿的爱情--2011-01-(27-28)
- 关于对DSP28系列计算FFT的时间的探讨
- 10 05 28 事情多了
- 2011_10_28学术报告参会感言(做研究写论文)
- NetBeans 时事通讯(刊号 # 144 - Apr 28, 2011)
- 读书时间 2011/11/13
- 读书记录(1) Java基础(2016-11-05)
- Libev源码分析05:Libev中的绝对时间定时器