我下载了该文件ToyVpnServer.cpp,并执行了文件头中的指令。然后我用gcc ToyVpnServer.cpp
编译它,然后创建一个a.out,然后运行它(如文件标题中所述)./a.out tun0 8000 test -m 1400 -a 10.0.0.2 32 -d 8.8.8.8 -r 0.0.0.0 0
。在编译它之前,如下所述,我添加了一行{{ 1}}在主函数的开头,这意味着它应在执行后立即在屏幕上打印printf("%d",1000);
。但没有任何显示,程序继续运行。仅当参数计数小于5时,1000
下的printf
函数才有效!
我在Ubuntu14和16上都进行了测试。
它怎么了?
if (argc < 5)
答案 0 :(得分:2)
它应该在执行后立即在屏幕上打印1000。?
否,printf()
是一种库函数,其作用是将数据放入stdout
缓冲区中而不是直接在控制台上,并且stdout
流是行缓冲,即它将仅在到达新行后才显示其内容。
这里
printf("%d",1000);
printf()
不会清除/刷新stdout
流默认值,程序员需要这样做。解决此问题的一种方法是使用fflush(stdout)
之类的
printf("%d",1000);
fflush(stdout);
或使用换行符,例如
printf("%d\n",1000); /* new line character clears the stdout buffer here */
答案 1 :(得分:-2)
exit(1);正在退出程序。在此行之前,请使用getchar();。暂停屏幕。