易截截图软件、单文件、免安装、纯绿色、仅160KB

学习笔记 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暑期强化班

近几年,嵌入式行业迅猛发展,嵌入式技术无处不在,从随身携带的mp3、手机、PDA到家庭之中的智能电视、智能冰箱、机顶盒,再到工业生产、娱乐中的机器人,无不采用嵌入式技术。这导致嵌入式人才需求也迅速增加,嵌入式开发已成为当前最热门最有发展前途的行业之一。嵌入式开发人员的薪资也水涨船高,在北京,嵌入式初级工程 ......

ARM Linux启动过程分析


摘 要: 嵌入式 Linux 的可移植性使得我们可以在各种电子产品上看到它的身影。对于不
同体系结构的处理器来说Linux的启动过程也有所不同。本文以S3C2410 ARM处理器为例,
详细分析了系统上电后 bootloader的执行流程及 ARM Linux的启动过程。
......

linux 备忘录一

今天学到的东东:
1、查看进程所对应可执行程序的绝对路径
[1].   ps -ef | grep 进程名   获得PID
[2].   进入proc文件系统里对应的目录:/proc/ <PID>
[3].   ls   -l
      exe链接对应的就是可执行文件的全路经
   ......

linux安装新字体


以ubuntu为例,字体文件为nfont.ttf
sudo mkdir /usr/share/fonts/myfonts /*建立myfonts的自定义目录*/
sudo cp nfont.ttf /usr/share/fonts/myfonts /*拷贝nfont.ttf到自定义目录*/
sudo fc-cache -fv
然后就OK了!
......

linux方面的杂谈

1.在shell脚本中会用到if判断,事实上就是test加参数执行的结果,比如:
if test -f /xxx ;then YYY ;fi,但是还有另一种写法,那就是if [ abc ];then YYY,实际上“[”也是一个命令,用whereis [可以证实,该“[”程序中必然要有一个“]”作为参数,然后判断$1到"]"之间的参数的 ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号