为交互模式制作C程序

时间:2012-01-27 04:29:31

标签: c linux bluetooth obex

这里有一个类似交互模式的命令:

obex_test -b $BD_ADDR $CH_NUM

此命令来自脚本,但我想通过C程序中的系统调用运行此命令。 obex_test只是obex文件传输库。 在这里,我想通过蓝牙从远程设备接收文件到本地设备。 这是obex_test

的手册页

请有人告诉我如何将C程序置于交互模式,如此命令,我也想使用此命令。

我使用popen(command,"r")但它没用;它不接受用户的输入。 如果我使用"w"模式,那么我不知道会发生什么;我直接收到>Unknown Command之类的消息。当我们给出不同的选项时,这是该命令给出的错误。因此,它被视为一种写入模式。

2 个答案:

答案 0 :(得分:1)

您可以拥有两对管道(使用pipe(2)系统调用创建);一个用于从您的程序到obex_test stdin 以及一个从obex_test stdout 到您的程序的数据。然后你会forkexecve ...小心死锁(当你的输出管道已满并阻塞它时,你的程序在写入obex_test stdin 时被阻止了) ,您可能需要致电poll(2)select(2) ...

但是,正如手册页解释的那样,“obex_testlibopenobex库的测试应用程序”。那么为什么不直接调用这个libopenobex库中的函数来链接到你的程序呢?

答案 1 :(得分:-1)

您可以使用系统命令。有关详细信息,请查看手册页。 对于例如system(“obex_test -b 172.16.7.1 1234”);