[問題] 利用程式輸入另外一個interactive程式

看板C_and_CPP作者 (Keinohrhasen)時間15年前 (2010/11/17 17:26), 編輯推噓1(102)
留言3則, 3人參與, 最新討論串1/1
遇到的問題: (題意請描述清楚) 在執行某些互動式程式的時候,皆為手動輸入prompt所要求的資料 例如: Continue? (yes/[no]): <-- 這裡需要user輸入 是否有方法可從另外一隻程式去對這樣的互動式程式作輸入的工作? 有Google一下以及爬了板上的文章 大致上有一些解法,想問問板上先進的看法以及對錯 所謂 interactive 也是從 stdin 讀入資料 如果可以將 stdin 從 keyboard 轉到輸入程式的 stdout 就可以達成以上的結果 利用 pipe 的簡單測試: system("echo %s | interactive_prog", reply); 不過當 interacitve_prog 需要很多輸入時, 例如: Username: <-- 先輸入使用者名稱 Password: <-- 再輸入使用者密碼 利用 popen(): FILE *stream = popen( "interactive_prog", "w" ); strcpy( buf, "abcd" ); /* username */ fwrite( buf, sizeof(char), sizeof(buf), stream ); strcpy( buf, "1234" ); /* password */ fwrite( buf, sizeof(char), sizeof(buf), stream ); 不知道這樣是否是可行的解法? 望先進給小弟一些提示或者有更好的解法可以供小弟研究 Orz 感謝! 開發平台: (例: VC++ or gcc/g++ or Dev-C++, Windows or Linux) gcc & Linux 補充說明: -- お言葉に甘えて そうさせていただきます 破竹の勢い (はちく の いきおい) -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 59.120.184.171

11/17 17:28, , 1F
關鍵字: pipe
11/17 17:28, 1F

11/17 17:29, , 2F
script language可以用heredoc來做
11/17 17:29, 2F

11/17 18:59, , 3F
expect.
11/17 18:59, 3F
文章代碼(AID): #1Cuv-lY1 (C_and_CPP)