2013-10-02 31 views
1

我想在c中使用系統函數的ftp命令。我需要執行3個命令。
如何在c中使用system()執行2 sucessive system命令,如連接到ftp並使用程序登錄?

1 FTP
2 USERNAME
3 PASSWORD

如何進行上述3使用系統()....我正在stucked在這裏
系統(FTP);

+0

你不能輕易使用'system'來做到這一點。 –

+1

你有什麼試過?這裏的人將幫助您解決問題,但不會爲您編寫代碼。 –

+0

用戶名ans密碼不是單獨的命令,而是輸入到ftp工具。儘管可以運行ftp客戶端並從C發送命令給它,但是更簡單的解決方案是從程序連接到服務器,可以直接使用套接字或使用套接字來實現。 – riv

回答

0

我推薦你使用一些其他的API而不是system()。 System()被認爲是提供命令的非標準方式。 我會建議只使用FTP命令打開該終端,然後使用ftp apis overs winsock API。

這些是我所知道的很少的圖書館。請使用,如果,

libftp 
ftplib 

足夠的文件可以在網上找到這個。 請讓我知道這是否回答你的問題。

4

您可能想要檢查您的ftp版本是否允許您在命令行上指定用戶名和密碼(有些可以)。當然,你也可以自己實現ftp(直接使用套接字),或者通過庫(周圍有好幾個)。否則,如果您確實想要運行系統的ftp命令,則可能需要使用popen(或者在Windows上,_popen),而不是使用。

FILE *cmd = popen("cmd", "w"); 

if (NULL != cmd) 
    fprintf(cmd, "%s\n%s", user_name, password); 

你寫FILE *善有善報子進程的標準輸入(如果你有"r"代替"w"打開,你可以從孩子的標準輸出讀取)。 popen的許多(但不是全部)最新版本也支持"rw",因此您可以寫入孩子的標準輸入並從其標準輸出中讀取。

但是,請注意,這隻適用於從其標準輸入讀取的子進程。有些使用其他方法直接從控制檯/鍵盤讀取,它不會(必然)與這些方法一起使用。

+1

另外,流必須用'pclose()'關閉。對於直接從控制檯/鍵盤讀取的應用程序,可以使用'forkpty()'和'exec *()'。 – jxh

相關問題