最简单易懂的进程通信入门实例(“共享外存/文件”)

来源:互联网 发布:广联达软件教学视频 编辑:程序博客网 时间:2024/06/06 09:38

      什么是进程? 这个早已经被问了无数遍了。 进程无非就是程序运行的一个实例。 你登录QQ, 那么就启动了一个QQ进程。 你再登录一个QQ, 又启用了另外一个QQ进程。 那一年, 我无聊地登录了5-6个QQ, 那是, 我启动了5-6个QQ进程。 不过, 那时候, 我还不知道什么是进程。

     三年前, 需要用matlab对视频进行裁剪, 需要用C对视频进行编码和解码, 然后又需要利用matlab对数据进行分析和可视化。为了使一切过程自动化运行, 需要好好控制matlab程序和C程序的运行, 注意数据交换和传递。那时候, 我用了最简单最原始的进程通信方法。 为了方便起见, 现在仅仅简单模拟一下。

      说明, 在后面的博文中, 我们会学习“共享内存”的方法实现进程间的通信, 所以, 我将本文所介绍的最基本的最原始的进程间通信方式命名为“共享外存/共享文件

     进程1对应的代码为:

#include <stdio.h>int main(){FILE *fp = fopen("test.txt", "w");if(NULL == fp){return 1;}int c = 97;fputc(c, fp);fclose(fp);return 0;}

    进程2对应的代码为:

#include <stdio.h>int main(){FILE *fp = fopen("test.txt", "r");if(NULL == fp){return 1;}int c = fgetc(fp);fclose(fp);printf("%d\n", c);return 0;}
    

      进程1把数据写入文件, 进程2从文件中读取数据。 可见, 这两个进程间的通信是通过文件来完成的。 当然了, 这是一种最原始最简单的进程通信方式, 操作系统提供了更多更好的进行间通信方式, 我们将逐步来学习这些进行通信方式(实际上, 我们学过的socket编程就是一种很好的进程通信方式)。


       进程间为什么要通信呢? 这个问题等价于: 人和人为什么要交流?也等价于:人和人为什么发生联系/关系? 所以, 这是个不答自明的问题。



0 0
原创粉丝点击