请您告诉我,如果使用escript运行,下面的代码为什么不使用stdout?
main(_) ->
spawn(fun() -> io:fwrite("blah") end).谢谢!
发布于 2014-08-07 12:55:58
fwrite在脚本中运行时仍然会写到stdout,这里的问题是您的程序在生成的进程有机会运行之前就终止了!
main函数一结束,escript就会终止,这取决于虚拟机如何调度您生成的进程,您可能执行也可能不会执行fwrite。
对于您的示例,一个简单的解决方法是添加一些同步:
main(_) ->
MainPid=self(),
spawn(fun() -> io:fwrite("blah"), MainPid ! done end),
receive
done ->
ok
end.这使得主进程等待终止,直到生成的进程发送了消息。
https://stackoverflow.com/questions/25177561
复制相似问题