学习笔记 Unix/Linux进程间通信
面试时一再地被问到进程间通信的情况,而我的理解一直停留在概念上和名词上,必须要做点实验加深理解。
IPC:Interprocess communication。有些IPC的方法不仅可以用于相同主机,也可以用于不同主机,如sockets和STREAMS。
经典IPC之一:pipes(管道)
,使用最广泛,具有亲缘关系
的进程间才能使用管道进行IPC。
使用了管道的例子:ls -a | grep "jun"
自己的程序中使用管道的方法:父进程创建pipe,然后fork子进程,这时父子进程通过pipe进行通信了。
例子代码:(为了抓住重点,删除了处理错误的代码)
int main()
{
int fd[2]; //管道是一种文件,有read端和write端,要用到两个file descriptor
pipe(fd); //创建管道
pid = fork();
if (pid > 0) { //父进程
close(fd[0]); //fd[0]是read端,fd[1]是write端,这里关闭read端。close()是File I/O的API。
write(fd[1], ”hello pipe\n", 11); //通过write端,写入数据。write()是File I/O的API。
}
else { //子进程
close(fd[1]); //关闭write端
int n = read(fd[0], buf, MAX_SIZE);
write(1, buf, n); //整数1,在我所知道的操作系统的实现中是标准输出的File descriptor
}
exit(0);
}
程序代码中使用管道的套路一般是:pipe;fork;exec*,操作系统又提供了popen和pclose函数整合有关管道的函数,使得可以在自己的程序中用更少的代码实现管道。
经典IPC之二:FIFOs, FIFOs are sometimes called named pipes(有名管道)。突破了只能在相关进程间使用的限制.
d
补:面试时我猜测共享文件是一种IPC,这个不对。我因为对共享内存没记牢靠,所以会猜测到共享文件是一种IPC。
相关文档:
总览
用iptables -ADC 来指定链的规
则
,-A添加 -D删除 -C 修改
iptables - [RI] chain rule num rule-specification[option]
用iptables - RI 通过规则的顺序指定
iptables -D chain rule num[option]
删除指定规则
iptables -[LFZ] [chain][option]
用iptables -LFZ 链名 [选项]
iptables -[NX] chain
用 -NX ......
长期对着黑白的终端,可能会觉得枯燥。其实Bash允许自定义彩色的命令提示符、彩色的grep显示、彩色的man显示、彩色的ls显示等等。
我们只需要编辑个人或者全局的shell配置文件就可以构建自己的独特的多姿多彩的shell。其中,用户个人配置文件是~/.bashrc,全局配置文件是/etc/bash.bashrc(ubuntu)或者/etc/bashrc(Fedor ......
=======================================================================
一些关于Linux的资源站点,希望对大家有帮助
http://www.linux.org/ ;
Linux官方新闻和信息网站。
http://freesoft.cei.gov.cn/ ;
中国软件行业协会国际自由软件应用研究发展分会的自由软件库,上面提供有各种Linux软件可供下载,并有Linux ......
Linux下读硬盘序列号的程序
/*
* gethddsn.c
*
* Get serial number of ide hard disk.
* example: my Maxtor 15G 's s/n is K306S04C.
*
* Compile with: gcc -O2 gethddsn.c
*
* Xiaoming DONG <xmdong@263.net>
* Aug 24, 2000
*
*/
#include <stdio.h>
#include <stdlib.h>
#includ ......