学习笔记 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。
相关文档:
本文详细描述了在Linux操作系统上安装和配置“自适应通信环境(ACE)”的过程和注意事项。zCkLinux联盟
文中的描述基于RedHat Linux 9操作系统和ACE 5.4版zCkLinux联盟
准备工作:zCkLinux联盟
1.确保你的Linux操作系统的开发环境(gcc、make……)是完整且可用的。zCkLinux联盟
2.在安装ACE的过程中 ......
在TimesTen的优化中,如果涉及到 Replication 或者Cache Group的话,那么针对 TCP/IP相关的参数的优化对性能是有益的。因为它们俩都是通过TCP/IP协议进行数据交互的。在安装文档(install.pdf)的39页有具体的说明:
For replication, TCP send and receive buffers should be increased to a minimum of 512KB. To ......
2007-11-09
LInux下如何安装ffmpeg
关键字: linux ffmpeg
终于装上了,把过程记录一下
首先要安装各种解码器
1、lame
lame-3.97.tar.gz
Url:http://sourceforge.net/project/showfiles.php?group_id=290&package_id=309
安装方法如下:
Java代码
tar -zxvf lame-3.97.tar.gz   ......
线程的同步, 发生在多个线程共享相同内存的时候, 这时要保证每个线程在每个时刻看到的共享数据是一致的. 如果每个线程使用的变量都是其他线程不会使用的(read & write), 或者变量是只读的, 就不存在一致性问题. 但是, 如果两个或两个以上的线程可以read/write一个变量时, 就需要对线程进行同步, 以确保它们在访问该变 ......
公司的服务器是CentOS 5.4(Final)版的,今天在上面安装了一回mysql5.5,记录如下:
1、从http://blog.s135.com/soft/linux/nginx_php/mysql/mysql-5.5.2-m2.tar.gz 下载源码安装包到/usr/local/src
2、tar zxvf mysql-5.5.2-m2.tar.gz 解压到/usr/local/src/mysql-5.5.2-m2下
cd mysql-5.5.2-m2/
&n ......