2010-03-01 3 views
3

C 프로그램 (OS X)에서 ftp 클라이언트를 제어하려고합니다. 나는 포크를했고 execve - 프로세스가 시작되었다. 문제는 파이프입니다. ftp 클라이언트 프로세스에 명령을 보내고 피드백을 받으실 수 있습니다. ("help \ n"을 보내면 도움을 얻을 수 있습니다.)하지만 파이프에서 결코 얻지 못한 것은 "ftp>"프롬프트입니다. 어떤 아이디어?C에서 파이프로 제어되는 ftp 클라이언트

이반

+0

ftpget, ftpput, curl 또는 wget과 같은 명령 (프로그램)을 실제로 살펴볼 수 있습니다. 비대화 형 작업에 훨씬 적합하며 많은 두통을 줄일 수 있습니다. 프론트 엔드에서 완전히 상호 작용하는 ftp. –

답변

1

프로그램은 stdin을 검사하여 터미널인지 파이프인지 확인할 수 있습니다. 귀하의 경우, FTP 프로그램은 아마도이를 수행합니다 (예를 들어, 진행 막대를 렌더링하거나 명령 행 편집을 제공하기 위해 이스케이프 시퀀스를 사용할 수 있는지 여부를 아는 경우).

프롬프트가 정말로 필요한 경우 콘솔을 에뮬레이트하는 PTYs (의사 터미널)을 조사해야합니다.

0

추측 : STDERR에 기록 프롬프트 "FTP>"이 아닌가요?

3

stdin/stdout이 터미널이거나 뭔가 다른 경우 (많은 프로그램이 있습니다. C 라이브러리가 다른 방식으로 버퍼링을 시작하면 ...) 제어하려는 경우, 유사 터미널에 대한 정보를 검색합니다. 여기서는 설명하기에는 너무 기술적입니다. (그리고 먼저 expect 같은 프로그램을 보면, 당신이 쓸 필요는 없을 것입니다.)

+1

+1은'expect'에 대해 정확히 목적을 위해 설계되었습니다. –

+0

아, 구식 (모뎀) ISP에 로그인 대화 상자를 프로그래밍 ('예상') 한 기억 ... –

관련 문제