这是我的代码:
void handle(int s)
{
char inbuf[4096];//we defined inbuf as 4096 size
dup2(s, 0);
dup2(s, 1);
setbuf(stdout, NULL);
alarm(ALARM_TIMEOUT_SEC);
printf("crackme> ");
if (NULL == fgets(inbuf, sizeof(inbuf), stdin)) {
return;
}
right_trim(inbuf);
if (is_correct(inbuf)) {
printf("Good job!\n");
}
}
如果有,问题是什么? 关于这个计划的一点解释: 她运行Server的第一部分 当有人连接到服务器并输入输入时(我做了一个循环来检查输入的长度) 因此,这个函数会查看它,如果传递是正确的,那么它的打印“干得好”
答案 0 :(得分:0)
回答标题为:是的。使用
void setbuf(FILE *stream, char *buffer);
由于安全问题而被弃用,并且仅出于兼容性目的由MSVC保留。请使用
int setvbuf(FILE *stream, char *buffer, int mode, size_t size);
更安全,因为还提供了缓冲区size
(通过提供mode
提供了更大的灵活性),它返回一个函数值来指示成功或失败。