- 論壇徽章:
- 0
|
近準(zhǔn)備寫個程序模擬telnet登錄,這個程序的功能包括:對telnet的操作進(jìn)行過濾和對tab鍵進(jìn)行補(bǔ)齊
我試寫的代碼如下:
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <signal.h>
#include <sys/wait.h>
#include <sys/socket.h>
void sig_int(int signum)
{
exit(0);
}
int main( int argc, char** argv )
{
int fd[2];
pid_t pid;
unsigned char c;
char buff[32], *ptr;
int new_line;
signal(SIGINT, sig_int);
signal(SIGPIPE, SIG_IGN);
pipe(fd);
//socketpair( PF_UNIX, SOCK_STREAM, 0, fd);
if ( (pid = fork()) == 0)
{
close(fd[1]);
dup2(fd[0],STDIN_FILENO);
execl("/usr/bin/telnet","telnet", "-l", argv[2], argv[1], (char *)0);
//execl("./autotel.exp", "autotel.exp", argv[1], argv[2], argv[3], (char *)0);
}
else if(pid > 0)
{
close(fd[0]);
memset(buff, 0, sizeof(buff));
ptr =buff;
while(1)
{
new_line =0;
if(read(0, &c, 1) < 1)
continue;
switch (c) {
case '\r' :
case '\n' :
case '\t' :
new_line =1;
default :
*ptr++ = c;
break;
}
if(new_line==1)
{
if(strstr(buff, "rm"))
printf("you cannot exec this cmd\n");
else
write(fd[1], buff, strlen(buff));
ptr =buff;
memset(buff, 0, sizeof(buff));
}
}
int status = 0;
wait( &status );
}
}
我想請教各位如何實現(xiàn)tab鍵的補(bǔ)齊 |
|