亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

Chinaunix

標(biāo)題: tab鍵進(jìn)行補齊問題 [打印本頁]

作者: dengj1983    時間: 2008-07-22 16:40
標(biāo)題: tab鍵進(jìn)行補齊問題
近準(zhǔn)備寫個程序模擬telnet登錄,這個程序的功能包括:對telnet的操作進(jìn)行過濾和對tab鍵進(jìn)行補齊
我試寫的代碼如下:
#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鍵的補齊
作者: gigabyte    時間: 2008-07-22 16:42
好長
作者: dengj1983    時間: 2008-07-22 16:44
我自己先頂下
作者: xi2008wang    時間: 2008-07-22 16:51
暈,你還是先tab鍵進(jìn)行縮進(jìn)!

indent -kr your.c
作者: dengj1983    時間: 2008-07-22 16:52
我的程序流程是這樣的子進(jìn)程先關(guān)閉管道的寫端,并先執(zhí)行telnet程序,父進(jìn)程通過管道將命令送給子進(jìn)程
但是對于tab鍵而言,如何讓它做到在一般的bash環(huán)境下那樣,可以自動補齊呢?
作者: 慮而后能得    時間: 2008-07-22 17:14
標(biāo)題: 回復(fù) #1 dengj1983 的帖子
收藏了 呵呵
作者: dengj1983    時間: 2008-07-22 17:17
各位大師們 , 看看我的帖子吧 求你們了
作者: 慮而后能得    時間: 2008-07-22 17:53
標(biāo)題: 回復(fù) #1 dengj1983 的帖子
收藏了  晚上好好看看  學(xué)習(xí)




歡迎光臨 Chinaunix (http://www.72891.cn/) Powered by Discuz! X3.2