84669 Lernen von Personen
152542 Lernen von Personen
20005 Lernen von Personen
5487 Lernen von Personen
7821 Lernen von Personen
359900 Lernen von Personen
3350 Lernen von Personen
180660 Lernen von Personen
48569 Lernen von Personen
18603 Lernen von Personen
40936 Lernen von Personen
1549 Lernen von Personen
1183 Lernen von Personen
32909 Lernen von Personen
最近遇到了一个问题,就是我想写一个程序,我可以启动它,在后台运行,该程序可以提供函数接口做一些操作。然后其它程序可以通过包含后台程序的头文件,使用后台程序的函数。
想了好久不知道,该怎么做。求各位帮助啊。
闭关修行中......
建议参考进程间通讯(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