linux下c如何启动监听,unix下用C如何调用111端口,或者说 如何让服务器自动启动一个程序?...

假设在unix下某目录有一个用C编译好的执行文件abc,运行时带一个年月参数,如abc  200905 ,abc程序运行时会在屏幕显示一些信息。

现在想实现这么个功能:局域网中任一台机器(xp系统), 运行一个VC或BC开发的程序,该程序向服务器(UNIX系统)发出请求,服务器收到请求后可以自动启动程序 abc,并且吧abc在屏幕上显示的内容传送到xp系统的机器上来显示。

我注意到unix下有一个111端口,作用是 111 TCP/UDP  sunrpc          Sun Remote Procedure Call Sun远程过程调用

请问各位大侠:

1。是否可以在写客户端程序时直接调用111端口,把abc  200905当成参数传给111端口,这样就可以直接启动abc 程序,而不需要再编写服务器端的程序呢?

2。如何判断abc程序已经执行完毕?

3。如何截取abc程序运行后在屏幕显示的信息?

|

像你这样的要求根本没必要用什么远程过程调用来实现,远程过程调用是用来调用动态库的。

建立一个简单的服务器程序以后,可以把客户程序传过来的字串识别为命令

并在执行之前把标准输出 1 dup到tcp套接字上。

close(1);

dup(socket);

这样程序的执行结果就直接通过套接字传送给客户程序了,程序执行完成以后,服务端会自动关掉连接。

|

LZ的这种需求似乎很普通,就像4楼说的,另外写一个监听端口(111)的程序(111端口是否小了点?用户可支配的端口应该是大于1024的吧?)。

当监控程序监听到111端口的交易请求(请求数据包括年月YYYYMM)时,然后调用abc,将日期作为参数。并且根据abc的返回值来判断abc执行是否成功。最后监听程序将abc的返回值通过socket返回给客户端

这个方法能够实现LZ的1、2两点。而第3点似乎不容易实现,因为abc中显示的内容,监听程序不容易捕捉到。

如果需要实现第3点,我的方法是更改一下程序abc,使监听程序与abc之间采用消息队列通讯(或者其他的进程间通信方式)。这样将abc在执行过程中的显示的内容,通过消息队列传递给监听程序,监听程序通过socket返回给客户端。剩下的部分就是客户端去处理如何显示信息了。

希望能对你有帮助

|

现在想实现这么个功能:局域网中任一台机器(xp系统), 运行一个VC或BC开发的程序,该程序向服务器(UNIX系统)发出请求,服务器收到请求后可以自动启动程序 abc,并且吧abc在屏幕上显示的内容传送到xp系统的机器上来显示。

写个socket监听,接收到请求就启动程序,用system就可以,然后把内容重定向到文件里,从文件里读出数据,再通过socket发给xp机器.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值