最近遇到了一个问题,就是我想写一个程序,我可以启动它,在后台运行,该程序可以提供函数接口做一些操作。然后其它程序可以通过包含后台程序的头文件,使用后台程序的函数。
想了好久不知道,该怎么做。求各位帮助啊。
闭关修行中......
建议参考进程间通讯(RPC) 但是直接包含后台程序的头文件,使用后台程序的函数,可能做不到
最简单的做法是重定向标准输入和标准输出,通过它们来控制后台程序。
http://stackoverflow.com/questions/2680174/redirect-stdin-in-c-program-to-another-process
后台启动的这个程序就是一个服务(一个常驻内存的进程,A),而后续写的程序(称为B程序)与A之间可以通过各种方式通信; 而能够通信之后,A中的所有函数就可以随便调用(当然,是通过双方协商的协议调用); 如果需要直接对外暴露一个函数,其实,就是将这个函数发布为一个服务供其它用户使用;
将函数发布成服务,一些中间件的服务就是这样做的,比如Tuxedo;
进程间通信的方式就多种多样了, 比如,管道;共享内存、队列等;参考《UNIX网络编程 卷2》进程间通信:http://www.me115.com/book/129.html
或许,你的要求只是一个动态链接库,将A的代码打包为一个动态库, 暴露头文件接口给B使用?这样,就只有一个进程;
将当前后台程序和其他程序共用的部分抽离出来 做成动态库
网络服务,soap
建议参考进程间通讯(RPC)
但是直接包含后台程序的头文件,使用后台程序的函数,可能做不到
最简单的做法是重定向标准输入和标准输出,通过它们来控制后台程序。
http://stackoverflow.com/questions/2680174/redirect-stdin-in-c-program-to-another-process
后台启动的这个程序就是一个服务(一个常驻内存的进程,A),而后续写的程序(称为B程序)与A之间可以通过各种方式通信;
而能够通信之后,A中的所有函数就可以随便调用(当然,是通过双方协商的协议调用);
如果需要直接对外暴露一个函数,其实,就是将这个函数发布为一个服务供其它用户使用;
将函数发布成服务,一些中间件的服务就是这样做的,比如Tuxedo;
进程间通信的方式就多种多样了,
比如,管道;共享内存、队列等;参考《UNIX网络编程 卷2》进程间通信:http://www.me115.com/book/129.html
或许,你的要求只是一个动态链接库,将A的代码打包为一个动态库,
暴露头文件接口给B使用?这样,就只有一个进程;
将当前后台程序和其他程序共用的部分抽离出来 做成动态库
网络服务,soap