프로그램은 일반적으로 제가 구현하고 싶은 텔넷 프로그램입니다.
클라이언트 측에서 사용자는 자신의 로그인과 비밀번호를 보내고, 맞다면 서버에 명령을 보내기 시작합니다.
서버 측에서는 시스템의 사용자 인증을 확인하고 그것이 사실이라면 파일에 저장된 기본 셸을 실행하여 passwd
명령을 실행해야 합니다.
문제는 system
C 함수를 사용하여 그의 쉘을 실행하려고 할 때 쉘이 실행된 다음 닫히는 것입니다. 사용자를 위해 열린 쉘을 system()
사용 fork()
하고 마친 후 닫히기 때문입니다.exec()
프로세스 내에서 새 셸을 실행하고 계속 실행하여 다음 명령을 실행하려면 어떻게 해야 합니까?
답변1
답변2
이런 종류의 일에 대해서는 더 쉬운 것부터 시작하고 싶을 수도 있습니다. 왜냐하면 당신이 이 분야에 익숙하지 않은 것처럼 들리기 때문입니다. 어쩌면 이전 talk / talkd
명령줄 프로그램과 데몬이 이해하기 더 쉬울까요? 일부 귀중한 리소스에는 APUE(UNIX 환경의 고급 프로그래밍)(Stevens), UNP 또는 UNIX용 네트워크 프로그래밍(Stevens도 제공) 및 효과적인 TCP/IP 프로그래밍(Snader)이 포함되어 있어 작업 유형에 더 익숙해질 수 있습니다. 현재 진행 중인 작업, 특히 TCP/IP 작업을 수행할 것입니다.
답변3
그냥 사용할 수는 없습니다 . 직접 사용 하고 양방향으로 파이프를 사용해야 system
합니다 . Ctrl 키 입력을 캡처하려면 일종의 터미널 인터페이스도 사용해야 합니다.fork
exec