我安装了emacs + sbcl + slime.我定义了这个功能
(defun jugar ()
(let* ((nodoActual *nodo-inicial*)
(estadoActual (nodo-estado nodoActual))
(timeStart nil)
(timeEnd nil)
)
(loop while (not (es-estado-final estadoActual)) do
(setf *hojas* 0)
(setf timeStart (get-universal-time))
(setf nodoActual (decision-minimax nodoActual *profundidad* timeStart))
(setf timeEnd (get-universal-time))
(setf estadoActual (nodo-estado nodoActual))
(imprime-en-fichero estadoActual)
(format t "Hojas analizadas: ~a ~%" *hojas*)
(format t "Tiempo empleado: ~a ~%~%" time))
))
Run Code Online (Sandbox Code Playgroud)
进行一系列调用并在循环中打印一些变量.
问题是当我(jugar)从*slime-repl sbcl*缓冲区调用时,提示等待直到(jugar)执行结束以显示所有(format …)在一起.我从一个终端(运行sbcl)尝试了同样的方法并且运行良好,所以我猜这是与emacs或slime相关的东西.我该如何解决?
请检查一下这个要点并告诉我,出了什么问题?
为什么我看不到我的消息?
要点: https: //gist.github.com/cnaize/895f61b762a9f5ee074c
如果简单的话,我有两个函数:
func send(param martini.Params, r render.Render) {
Ct.Msgs <- param["msg"]
fmt.Printf("Sent: %v", param["msg"])
r.JSON(http.StatusOK, Response{"status": "ok"})
}
Run Code Online (Sandbox Code Playgroud)
及watch功能:
func watch(rw http.ResponseWriter, r render.Render) {
var msg string
ok := true
for ok {
select {
case msg, ok = <-Ct.Msgs:
rw.Write([]byte(msg))
fmt.Printf("Wrote: %v", msg)
f, ok := rw.(http.Flusher)
if ok {
f.Flush()
fmt.Println("Flushed")
} else {
r.JSON(http.StatusOK, Response{"status": "error", "descr": "CANT_FLUSH"})
return
}
}
}
r.JSON(http.StatusOK, Response{"status": "ok", "descr": "finished"})
}
Run Code Online (Sandbox Code Playgroud)
为什么它不起作用?
编辑: …
根据 的定义endl,它用于插入换行符并刷新流。我记得如果插入新行,则缓冲区将自动刷新。如果是这样,为什么endl在插入新行后仍然需要刷新流。
我正在编写一个PHP脚本,但却陷入了这个问题flush().这是我的脚本:
<?php
echo "1";
flush();
sleep(5);
echo "2";
?>
Run Code Online (Sandbox Code Playgroud)
我希望我的脚本发送'1',然后等待5秒,然后发送'2'.但相反,脚本等待5秒,然后发送'12'.我正在寻找过去几个小时的答案,但我找不到适合我的答案.
我真的很困惑.我有一个C服务器,它工作得很好,但后来我添加了一些代码,我认为它工作正常,直到我的程序随机开始将int的值更改为负值.
基本上我有我的服务器输出发送的总字节数和传输中途,总是大约2100000000字节,总字节变为负数.这是我输出文件的一个例子.如果你查看我的代码,这个值不能变成负数.所以我怀疑这是更奇怪的事情.
"345000","1470253912","59203","5592","2069901108"
"348000","1470253912","475539","4194","2092449162"
"351000","1470253912","830291","2796","2112043464"
"354000","1470253913","243217","1398","2133985176"
"357000","1470253913","708686","13980","-2135434834"
"360000","1470253914","173646","9786","-2109094024"
"363000","1470253914","514938","6990","-2089413400"
Run Code Online (Sandbox Code Playgroud)
无论如何我添加的东西,我评论了它,我仍然遇到了同样的错误.仅供参考,我的代码在"NEW STUFF ADDED"标签下注释掉了.(我之所以添加它是因为这篇文章:在命令行上终止C程序,但确保编写完成后写入 )
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <errno.h>
#include <string.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <netdb.h>
#include <arpa/inet.h>
#include <sys/wait.h>
#include <signal.h>
#include <sys/time.h>
int PORT_NUM = 0;
int RecordRate = 3000;
FILE *fp;
typedef struct timeval timeval;
timeval time_;
void error(const char *msg)
{
perror(msg);
exit(1);
}
//NEW STUFF ADDED
//void sig_handler(int signo)
//{
// if (signo == SIGINT) {
// printf("received SIGINT\n"); …Run Code Online (Sandbox Code Playgroud) 有人可以解释一下netty方法究竟是ChannelHandlerContext flush()做什么的吗?它会立即通过网络发送所有消息,从而有效地绕过管道中的任何处理程序停止任何定义的处理吗?
我有以下代码:
int main()
{
printf("hello world");
while(1);
}
Run Code Online (Sandbox Code Playgroud)
打印你好世界吗?如果是,为什么?如果不是,为什么?我在linux机器上使用gcc来编译代码.