2012-01-27 70 views
0

这里我有一个命令,它就像交互模式:让C程序交互模式

obex_test -b $BD_ADDR $CH_NUM 

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

请任何人都可以告诉我怎样才能把我的C程序以交互模式像这个命令,我也想使用这个命令。

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

回答

-1

您可以使用system命令。查看手册页面了解更多详情。 例如系统(“obex_test -b 172.16.7.1 1234”);

+0

但是执行后,我必须给出一些东西 – user1089679 2012-01-27 05:26:38

+0

@ user1089679是的,是不是你所说的“交互模式”? – 2012-01-27 16:54:25

+0

我不是在这里问如何使用系统调用。我在这里问交互模式。 – user1089679 2012-01-30 04:29:58

1

您可以有两对管道(使用pipe(2)系统调用创建);一个用于从您的程序到obex_teststdin和一个从obex_teststdout到您的程序的数据。然后,你会forkexecve ...当心死锁(阻塞时,它的输出管道中充满写obex_test标准输入和阻止它你的程序),您可能需要调用poll(2)select(2) ......

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

+0

你可以给我任何这个管道概念的例子吗?请向我解释我是初学者 – user1089679 2012-01-27 07:35:23

+0

阅读任何有关Linux或Unix编程的标准书籍,以了解更多有关管道,过程,......但在你的情况下,我强烈建议使用'libopenobex'库;对于unix编程http://basepath.com/aup/和Linux编程http://www.advancedlinuxprogramming.com/ – 2012-01-27 08:38:07

+0

oki我会用图书馆的方式去。我会找到openobex库,并且必须改变这个事情。 – user1089679 2012-01-30 04:29:21