資源簡(jiǎn)介
用C語(yǔ)言實(shí)現(xiàn)的telnet 大家可以進(jìn)行簡(jiǎn)單的學(xué)習(xí)

代碼片段和文件信息
#include?“pty_fun.h“???
int?ptym_open(char?*pts_name?int?pts_namesz)??
{??
????char?*ptr;??
????int?fdm;??
????/*?
?????*return?the?name?of?the?master?device?so?that?on?failure?
?????*the?caller?can?print?an?error?message.?Null?terminate?to?
?????*handle?case?where?string?lenth?>?pts_namesz?
?????*?*/??
??
????strncpy(pts_name?“/dev/ptmx“?pts_namesz);??
????pts_name[pts_namesz?-?1]?=?‘\0‘;??
??
????fdm?=?posix_openpt(O_RDWR);??
????if?(fdm?0)??
????????return?OPEN_PTY_ERR;??
????if?(grantpt(fdm)?0)??
????{??
????????close(fdm);??
????????return?GRANT_PTY_ERR;??
????}??
????if?(unlockpt(fdm)?0)??
????{??
????????close(fdm);??
????????return?UNLOCK_PTY_ERR;??
????}??
????//if?((ptr?=?ptsname(fdm))?==?NULL)??
????if?((ptr?=?ptsname(fdm))?==?NULL)??
????{??
????????close(fdm);??
????????return?GET_PTYS_NAME_ERR;??
????}??
????strncpy(pts_name?ptr?pts_namesz);??
????pts_name[pts_namesz?-?1]?=?‘\0‘;??
??
????return?fdm;??
??
}??
??
int?ptys_open(char?*pts_name)??
{??
????int?fds;??
????if?((fds?=?open(pts_name?O_RDWR|O_NONBLOCK|O_CREAT))?0)??
????????return?OPEN_PTYS_ERR;??
????return?fds;??
}??
??
int?pty_fork(int?*ptrfdm?char?*slave_name?int?slave_namesz??
????????const?struct?termios?*slave_termiors??
????????const?struct?winsize?*slave_winsize?pid_t?*ppid)??
{??
????int?fdm?fds;??
????pid_t?pid;??
????char?pts_name[20];??
??
????if?((fdm?=?ptym_open(pts_name?sizeof(pts_name)))?0)??
????{??
????????return?fdm;??
????}??
??
????if?(slave_name?!=?NULL)??
????{??
????????strncpy(slave_name?pts_name?slave_namesz);??
????????slave_name[slave_namesz?-?1]?=?‘\0‘;??
????}??
??
????if?((pid?=?fork())?0)??
????{??
????????return?FORK_ERR;??
????}??
????else?if?(pid?==?0)??
????{??
????????if?(setsid()?0)??
????????{??
????????????return?SETSID_ERR;??
????????}??
//printf(“112222pts_name?=?%s\n“?pts_name);
????????if?((fds?=?ptys_open(pts_name))?0)??
????????{??
???????? printf(“1122errr\n“);
fflush(NULL);
????????????close(fdm);??
????????????return?OPEN_PTYS_ERR;??
????????}??
//printf(“fds?=?%d\n“fds);
//fflush(NULL);
#ifdef?TIOCSCTTY???
????????if?(ioctl(fds?TIOCSCTTY?(char?*)?0)?0)??
????????????return?TIOCSCTTY_ERR;??
#endif???
//??????if?(slave_termiors?!=?NULL)???
//??????{???
//??????????if?(tcsetattr(fds?TCSANOW?slave_termiors)?0)???
//??????????????return?INIT_ATTR_ERR;???
//??????}???
//??????if?(slave_winsize?!=?NULL)???
//??????{???
//??????????if?(ioctl(fds?TIOCSWINSZ?slave_winsize)?0)???
//??????????????return?INIT_ATTR_ERR;???
//??????}???
#if?0
close(0);
close(1);
close(2);
#endif
? #if?0
???????if?(dup2(fds?STDIN_FILENO)?!=?STDIN_FILENO)??
???????????return?DUP_STDIN_ERR;??
????????if?(dup2(fds?STDOUT_FILENO)?!=?STDOUT_FILENO)??
????????????return?DUP_STDOUT_ERR;??
????????if?(dup2(fds?STDERR_FILENO)?!=?STDERR_FILENO)??
????????????return?DUP_STDERR_ERR;??
?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----
?????文件????????635??2013-01-28?08:57??telnet\Makefile
?????文件????????635??2013-01-28?08:43??telnet\Makefile.bak
?????文件???????3858??2013-01-28?10:21??telnet\pty_fun.c
?????文件???????1421??2013-01-28?08:48??telnet\pty_fun.h
?????文件????????765??2013-01-28?10:03??telnet\telnet.SearchResults
?????文件??????20544??2013-06-25?11:46??telnet\telnet.WK3
?????文件??????10787??2013-01-28?08:47??telnet\telnetserver.c
?????文件??????24518??2013-01-28?10:21??telnet\tlnet
?????目錄??????????0??2013-10-24?14:49??telnet
-----------?---------??----------?-----??----
????????????????63163????????????????????9
評(píng)論
共有 條評(píng)論