我想在c中使用系統函數的ftp命令。我需要執行3個命令。
如何在c中使用system()執行2 sucessive system命令,如連接到ftp並使用程序登錄?
1 FTP
2 USERNAME
3 PASSWORD
如何進行上述3使用系統()....我正在stucked在這裏
系統(FTP);
我想在c中使用系統函數的ftp命令。我需要執行3個命令。
如何在c中使用system()執行2 sucessive system命令,如連接到ftp並使用程序登錄?
1 FTP
2 USERNAME
3 PASSWORD
如何進行上述3使用系統()....我正在stucked在這裏
系統(FTP);
我推薦你使用一些其他的API而不是system()。 System()被認爲是提供命令的非標準方式。 我會建議只使用FTP命令打開該終端,然後使用ftp apis overs winsock API。
這些是我所知道的很少的圖書館。請使用,如果,
libftp
ftplib
足夠的文件可以在網上找到這個。 請讓我知道這是否回答你的問題。
您可能想要檢查您的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"
,因此您可以寫入孩子的標準輸入並從其標準輸出中讀取。
但是,請注意,這隻適用於從其標準輸入讀取的子進程。有些使用其他方法直接從控制檯/鍵盤讀取,它不會(必然)與這些方法一起使用。
另外,流必須用'pclose()'關閉。對於直接從控制檯/鍵盤讀取的應用程序,可以使用'forkpty()'和'exec *()'。 – jxh
你不能輕易使用'system'來做到這一點。 –
你有什麼試過?這裏的人將幫助您解決問題,但不會爲您編寫代碼。 –
用戶名ans密碼不是單獨的命令,而是輸入到ftp工具。儘管可以運行ftp客戶端並從C發送命令給它,但是更簡單的解決方案是從程序連接到服務器,可以直接使用套接字或使用套接字來實現。 – riv