0

在这里,我有一个类似于交互模式的命令:

obex_test -b $BD_ADDR $CH_NUM

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

请任何人告诉我如何将我的 C 程序设置为像这个命令一样的交互模式,我也想使用这个命令。

我用过popen(command,"r")但没用;它不接受用户的输入。如果我使用"w"模式,那么我不知道会发生什么;我直接收到类似的消息>Unknown Command。当我们给出不同的选项时,这是这个命令给出的错误。所以它采取了某种写模式。

4

2 回答 2

1

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

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

于 2012-01-27T06:58:26.427 回答
-1

您可以使用系统命令。查看手册页以获取更多详细信息。例如系统(“obex_test -b 172.16.7.1 1234”);

于 2012-01-27T05:17:49.990 回答