资源简介
用C语言实现的telnet 大家可以进行简单的学习
代码片段和文件信息
#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;
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 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
- 上一篇:ba
se64编码与解码源程序 C语言实现 - 下一篇:二叉排序树C语言版的!.c
相关资源
- C语言嵌入式Modbus协议栈,支持主站和
- C语言封装的HttpClient接口
- C语言课设计算器
- C语言 学生兴趣管理系统
- c语言实现火车订票系统(控制台)源
- 模拟笔记本电脑(C语言实现)
- c语言实现竞技比赛打分系统
- KMP算法C语言程序
- Linux c语言 学生成绩管理系统
- 弹跳的小球(test.c)
- 林锐—高质量C编程
- 基于c语言的通讯录系统
- C语言全套课件与教学资料-哈工大
- 计算机二级C语言真题.docx
- C语言实现 设备信息管理系统
- GBT 28169-2011 嵌入式软件 C语言编码规范
- C语言标准库函数大全.chm
- C语言常用代码(分章节)
- c语言课程设计:客房登记系统源码
- C语言常用算法源代码
- 吕鑫:VS2015之博大精深的0基础C语言视
- c语言文都讲义2020
- c语言课件56883
- C语言推箱子win控制台
- C语言程序设计50例.docx
- 烟花优化算法(c语言版)
- C语言程序设计教材习题参考答案.do
- 数据结构(C语言版)ppt课件,清华,
- c语言编程经典例题100例 word版
- C语言编译器的设计与实现.doc
评论
共有 条评论