84669 orang belajar
152542 orang belajar
20005 orang belajar
5487 orang belajar
7821 orang belajar
359900 orang belajar
3350 orang belajar
180660 orang belajar
48569 orang belajar
18603 orang belajar
40936 orang belajar
1549 orang belajar
1183 orang belajar
32909 orang belajar
最近遇到了一个问题,就是我想写一个程序,我可以启动它,在后台运行,该程序可以提供函数接口做一些操作。然后其它程序可以通过包含后台程序的头文件,使用后台程序的函数。
想了好久不知道,该怎么做。求各位帮助啊。
闭关修行中......
建议参考进程间通讯(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使用?这样,就只有一个进程;
将当前后台程序和其他程序共用的部分抽离出来 做成动态库
webService,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使用?这样,就只有一个进程;
将当前后台程序和其他程序共用的部分抽离出来 做成动态库
webService,soap