编程备忘录 --- Cygwin下Telnet编程的问题

    技术2026-06-12  0

     

    问题:

     

    通过Cygwin提供的telnet服务登陆到远程服务器上,运行 windows下开发的控制台应用程序,该控制台程序无法与远端的用户交互。

    例子:

    APP》input 2 number:

    APP》                -》用户输入2 3后,平幕上不显示

    按ctrl c后,程序退出,应用程序才一次性显示

    APP》2 3

    5

     

    APP》

     

    解决方法:

    使用Windows 中自己的scanf函数,使用Cygwin中的printf函数

     

    如果scanf和printf都使用Cygwin中的,还是不行

     

    Cygwin中对unix api的实现都封装在Cygwin1.dll中,可以通过dumpbin -exports cygwin1.dll > ../api.txt 来查看

     

    具体方法:

    typedef int (*PRINTFFUN)(const char *, ...); PRINTFFUN MyPrintf; //在mian函数开始的地方为cygwin预留栈空间 char szStackForCygwin[30000] = { 0 }; handle = LoadLibraryEx(“cygwin1.dll”,NULL,0); void (*init)() = (void (*)())GetProcAddress(handle, "cygwin_dll_init"); if (NULL != init) { init(); MyPrintf = (PRINTFFUN)GetProcAddress(handle, "printf"); } //用MyPrintf替代printf 

    直接使用studio.h中scanf,不要使用cygwin中的

    最新回复(0)