面试时一再地被问到进程间通信的情况,而我的理解一直停留在概念上和名词上,必须要做点实验加深理解。
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。
}
& ......
1.研究Linux实现多媒体播放的所有技术点
1) Live555库的编译与使用(已经搞定),需要进一步弄清楚的地方
在Linux如何编译动态库和静态库
如何编译,改变编译选项和集成编译
如何调试:gcc和IDE的 : QT Creator 、
2) ffmpeg在Linux下的编译(也不一定一定需要编译,至少让ffplay编译并运行)
要用到SDL库
3) 解码出来的图像声音的播放
研究Linux下播放图形的方法,QT,SDL等
研究Linux下播放声音的方法
4) 将现有的库进行移植
部分需要跨平台库的封装,类型定义,thread, GUI,A/V播放
接口抽象成能够跨平台调用
编译环境, 用Py生成对应脚本,VS的project file和Linux的makefile
......
在linux中的likely和unlikely
0
推荐
在linux中判断语句经常会看到likely和unlikely,例如:
if(likely(value)){
}
else{
}
简单从表面上看if(likely(value)) == if(value),if(unlikely(value)) == if(value)。
这两个宏对程序运行结果没有影响,只是用于提高程序效率。其实现和gcc编译器密切相关。
具体点说,就是如果你觉得程序运行时候一般sndcmd|=0的可能性比较大,那么就加上likely的macro;反之则加unlikely。
也就是likely和unlikely是一样的,但是实际上执行是不同的,加likely的意识是value的值为真的可能
性更大一些,那么执行if的机会大,而unlikely表示value的值为假的可能性大一些,执行else机会大一些。
加上这种修饰,编译成二进制代码时likely使得if后面的执行语句紧跟着前面的程序,unlikely使得else后
面的语句紧跟着前面的程序,这样就会被cache预读取,增加程序的执行速度,likely和unlikely的实现在
include/linux/compiler.h中:
9 #if __GNUC__ == 2 && __GNUC_MINOR__ < 96
10 #define __builtin_expect(x, expected_value) (x)
11 ......
随着光盘刻录机在linux计算机上的普及,以iso为主的光盘映像文件制作、转换、编辑等成了大家非常关心的东西。iso等格式的文件是一种数据在数据光盘上的组织形式,即光盘上的文件系统格式。那么,哪些软件可以制作光盘映像文件,他们的格式转换功能又是如何呢?哪些软件可以直接制作自启动的光盘呢?面对各种光盘映像制作软件,如何选择?下面就给大家介绍Linux下一些光盘映像制作方法,供大家选择使用时参考。
iso9660文件系统简介:随着大容量硬盘的普遍采用,人们已经习惯将光盘拷贝成光盘映像文件使用,普遍采用的便是大名鼎鼎的iso 9660国际标准格式,因此光盘映像文件也简称iso文件。因为iso文件保留了光盘中的全部数据信息(包括光盘启动信息),你可以方便地采用常用光盘刻录软件如K3b 和Nero Linux通过cd-r/rw烧录成光碟,也可以通过虚拟光驱软件(mount)直接使用。
由于光盘驱动器面对用户的是文件,如文本文件、图像文件、声音文件、执行文件等等,这就需要一个文件系统来管理,这样就可使用户把光盘驱动器当成一个文件集来看待,而不是让用户从物理层上去看待光盘驱动器盘。因此,仅有物理格式标准化还不够,还需要有一个如何把文件和文件目录放到光盘驱 ......
SLES10 Linux(kernel-2.6.16.21-0.8)平台下搭建Fortran并行编译环境
一.Fortran编译器的安装
Linux安装盘一般都自带有Fortran编译器,在SuSe9.1以前均带有g77,在Suse9.2以后为gfortran。但是,相对来说,由于g77和gfortran的编译的程序运行效率不是很高,所以都会选择再安装专业的Fortran编译器。
主流的Fortran 90/95编译器有PGI Fortran、HP Fortran Compiler(由Fortran PowerStation进化过来的)和Intel Fortran Compiler等。因为Intel Fortran Compiler9.1是Intel提供的免费的Non-Commercial版本,且在Intel平台上,具有较高的编译效率。它的发行版有Windows和Linux两种。在此,主要介绍在SLES10.0 上安装 Intel Fortran Compiler 9.1 的过程。
1.下载安装包
本次安装包从ftp上下载,ifcliv91.bin,为光盘文件,可以直接拷贝到目录/home/hou/software/intel_fc_91下。
2.解压安装文件,命令如下:
编译器是安装在/opt/intel目录下,协议则在该目录下的licenses文件夹中。最后还要指定licenses的位置。具体命令如下:
#mkdir -p /opt/intel/licenses
#cp /home/hou/isoftware/intel_fc_91/Crack/i*.lic /opt/intel/licenses
# export INTEL_LICENSE_FILE= ......
官方网站: http://fedoraproject.org/
在这儿选择需要的光盘格式镜像: http://fedoraproject.org/en/get-fedora-options#formats
i386体系: http://download.fedoraproject.org/pub/fedora/linux/releases/13/Fedora/i386/iso/Fedora-13-i386-DVD.iso
x86_64体系: http://download.fedoraproject.org/pub/fedora/linux/releases/13/Fedora/x86_64/iso/Fedora-13-x86_64-DVD.iso
我下载的是i386 32位的 Fedora-13-i386-DVD.iso
先看一下我的现在已存在的硬盘分区:
[liugang@localhost work]$ df -lh
Filesystem Size Used Avail Use% Mounted on
/dev/sda7
20G 7.1G 12G 38% / 我的根分区
tmpfs 987M 1.1M 986M 1% /dev/s ......