2012-01-27 84 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