Hello, Skynet!
Skynet这名字让我想起了经典科幻电影《终结者》里毁灭人类世界的终极人工智障,skynet的官方文档是挺给力的,但是没有那么好的引导机制,看了半天的文档还是不知道该怎么用skynet去写个最简单的Hello world,于是我就对着各种example试了半天。。
正文
skynet 不能被 install 到其他地方去,别想了。先写出Hello world再考虑其他问题吧。
这里就一口气搭建一个完整的project模板。
# 创建目录并初始化git仓库,当然也可以不这么做,记得把 skynet clone 下来就好。
mkdir project
cd project
git init .
touch readme.md
git add readme.md
git commit -m 'first commit'
git submodule add htttps://github.com/cloudwu/skynet.git
# 编译 skynet
pushd skynet
make linux # 记得先装上依赖库
popd
# 软链接出必要的库,大多 service 和必要的代码都在这里面
ln -s ./skynet/cservice ./
ln -s ./skynet/luaclib ./
ln -s ./skynet/lualib ./
# skynet 从 service 目录查找 lua 文件,很多 skynet 自带的 service 都在这里面,用户可能要自行添加 service 所以复制出来
cp -r ./skynet/service ./
# 配置项的含义可以直接看官方仓库的wiki
cat <<EOF
root="./"
thread=2
logger=nil
harbor=0
start="main"
bootstrap="snlua bootstrap"
lualoader="lualib/loader.lua"
cpath=root.."cserver/?.sp"
> config
在 project/service
目录里创建 main.lua
文件,然后写下这些代码。
local skynet = require "skynet"
skynet.start(function()
print('Hello world!')
skynet.exit()
end)
最后在project
目录执行
./skynet/skynet config
理应输出这样的文本
[:00000001] LAUNCH logger
[:00000002] LAUNCH snlua bootstrap
[:00000003] LAUNCH snlua launcher
[:00000004] LAUNCH snlua cdummy
[:00000005] LAUNCH harbor 0 4
[:00000006] LAUNCH snlua datacenterd
[:00000007] LAUNCH snlua service_mgr
[:00000008] LAUNCH snlua main
hello world!
来源:oschina
链接:https://my.oschina.net/u/3888259/blog/1836034