>> Delete Reply from No. 14314 article
No. RE: [질문]소스와 에러메시지가 있음니다. 보시구
답변부탁여...

등록 2000-12-13 18:22:00 By localhost     조회 2
이름 하늘    

		: 다음의 소스는 가상의 터미널(의사단말기)를
: 생성하는 소스입니다.
: 소스끝에 에러메시지가 있음다...
: 함 봐주시구여... 답변 부탁여...
:
: #include 		<stdio.h>
: #include		<fcntl.h>
: #include		<stropts.h>
:
: #define	PTY_MASTER	"/dev/ptmx"
:
: int
: pty_master()
: {
: 	int	master_fd;
:
: 	if ((master_fd = open (PTY_MASTER, O_RDWR)) < 0)
: 		return(-1);
:
: 	return(master_fd);
: }
:
:
: int
: pty_slave(master_fd)
: int	master_fd;
: {
: 	int	slave_fd;
: 	char	*slavename;
: 	int 	grantpt();
: 	int	unlockpt();
: 	char 	*ptsname();
:
: 	if (grantpt(master_fd) < 0) {
: 		close(master_fd);
: 		return(-1);
: 	}
:
: 	if (unlockpt(master_fd) < 0) {
: 		close(master_fd);
: 		return(-1);
: 	}
:
: 	slavename = ptsname(master_fd);
: 	if (slavename == NULL) {
: 		close(master_fd);
: 		return(-1);
: 	}
:
: 	slave_fd = open(slavename, O_RDWR);
: 	if (slave_fd < 0) {
: 		close(master_fd);
: 		return(-1);
:  	}
:
: 	if (ioctl(slave_fd, I_PUSH, "ptem") < 0) {
: 		close(master_fd);
: 		return(-1);
: 	}
: 	if (ioctl(slave_fd, I_PUSH, "ldterm") < 0 ) {
: 		close(master_fd);
: 		return(-1);
: 	}
:
: 	return(slave_fd);
: }
:
: main (argc, argv, envp)
: int	argc;
: char	**argv;
: char 	**envp;
: {
: 	int	master_fd, slave_fd, childpid;
:
: 	if (!isatty(0) || !isatty(1))
: 		err_quit("stdin and stdout must be a
: terminal");
:
: 	master_fd = pty_master();
: 	if (master_fd < 0)
: 		err_sys ("can't open master pty");
: 	if ((childpid = fork()) < 0)
: 		err_sys("can't fork");
: 	else if (childpid == 0) {
: 		slave_fd = pty_slave(master_fd);
: 		if (slave_fd < 0)
: 			err_sys("can't open pty slave");
: 		close(master_fd);
:
: 		exec_shell(slave_fd, argv, envp);
: 	}
:
: 	pass_all(master_fd, childpid);
: 	exit(0);
: }
:
:
: 위의 소스를 컴파일 시키면 다음과 같은 메시지가 나옵니다...
: 해결방법이 없을까여...???
: 도와주세여...
:
: [peter@host peter]$ gcc -o pty pty1.c
: /tmp/ccILuNss.o: In function `main':
: /tmp/ccILuNss.o(.text+0x18a): undefined reference to
: `err_quit'
: /tmp/ccILuNss.o(.text+0x1a7): undefined reference to `err_sys'
: /tmp/ccILuNss.o(.text+0x1c4): undefined reference to `err_sys'
: /tmp/ccILuNss.o(.text+0x1f3): undefined reference to `err_sys'
: /tmp/ccILuNss.o(.text+0x213): undefined reference to
: `exec_shell'
: /tmp/ccILuNss.o(.text+0x223): undefined reference to
: `pass_all'
: collect2: ld returned 1 exit status
:
: 원래의 프로그램이 유닉스용이구여 저는
: 알짜리눅스 6.1을 사용합니다....
: 알려주세여...
: 감솨여...
 유닉스와 리눅스는 완벽히 호환되지 않습니다..
위의 두 함수는 리눅스에는 없다는 말이지요...
err_sys는 대충 fprintf(ferror, " error message");로 바꿔주시면 되는
듯도 한데..
pass_all은 어떻게 처리해야 할지..--이 곳에 서명을 적어주십시오.
하늘은 언제나 푸르다 _._V
[관리자] 패스워드를 입력 하십시오. 답장이 존재하면 함께 삭제됩니다.[ 목록 | 이전 ]
패스워드:    

Copyleft 1999-2026 by JSBoard Open Project
Theme Designed by IDOO All right reserved