C語言拓展實現(xiàn)Lua sleep函數(shù)
這幾天在做一個小項目,其中用到了一些基本的API, 例如sleep,獲取當前目錄等等,lua標準庫中沒有提供這些接口,雖然所第三方庫中也都有實現(xiàn),但是要用的就那么幾個函數(shù),在一個嵌入式系統(tǒng)中安裝那么多第三方庫有點浪費資源,于是@勝利哥 寫了一個socket的C實現(xiàn),然后給我用。我試著把其他幾個函數(shù)也用C實現(xiàn),首先看下怎么用C寫lua的拓展。
C 部分
首先是根據(jù)Lua C語言的協(xié)議寫好調(diào)用模塊,編譯成.so 文件,然后才可以在lua腳本中調(diào)用。 下面是在Ubuntu14.04 **系統(tǒng)中,基于lua5.1** 寫的一個sleep實現(xiàn)。
*sleep.c 文件 *
/*學習寫lua c拓展,對于一些簡單的函數(shù)自己提供C拓展
*ubuntu 編譯 $ gcc -fPIC -shared -llua sleep.c -o orangleliu.so -I/usr/include/lua5.1 -std=gnu99
*/
#include "unistd.h"
/*這個三個是必須的頭文件*/
#include "lua.h"
#include "lualib.h"
#include "lauxlib.h"
/*simple sleep*/
static int sleep_c (lua_State *L){
long secs = lua_tointeger(L, -1); /*獲取參數(shù)*/
sleep(secs);
return 0; /*返回0個值,所以為0*/
}
static const struct luaL_Reg libs[] = {
{"sleep", sleep_c},
{NULL, NULL} /*the end*/
};
int luaopen_orangleliu (lua_State *L){
/*注冊lib, 上面luaopen_名稱 跟下面注冊的名稱要一致, 還要和編譯的.so文件名一致*/
luaL_register(L, "orangleliu", libs);
return 1;
}
編譯
$ gcc -fPIC -shared -llua sleep.c -o orangleliu.so -I/usr/include/lua5.1 -std=gnu99
lua 調(diào)用
test.lua
require "orangleliu"
print(os.time())
orangleliu.sleep(1)
print(os.time())
調(diào)用結(jié)果
$ lua test.lua
1427118862
1427118863
小結(jié)
基本的模板就是這樣的,復(fù)雜一些就是多個參數(shù)和多個返回值。 如果有C基礎(chǔ),寫起來還是挺快的,不過要是跨平臺處理起來也挺麻煩的。 大家可以在github上搜下別人寫的lua拓展庫,參考下。
欄 目:C語言
下一篇:C++動態(tài)規(guī)劃之最長公子序列實例
本文標題:C語言拓展實現(xiàn)Lua sleep函數(shù)
本文地址:http://mengdiqiu.com.cn/a1/Cyuyan/3103.html
您可能感興趣的文章
- 04-02c語言函數(shù)調(diào)用后清空內(nèi)存 c語言調(diào)用函數(shù)刪除字符
- 04-02c語言的正則匹配函數(shù) c語言正則表達式函數(shù)庫
- 04-02func函數(shù)+在C語言 func函數(shù)在c語言中
- 04-02c語言中對數(shù)函數(shù)的表達式 c語言中對數(shù)怎么表達
- 04-02c語言用函數(shù)寫分段 用c語言表示分段函數(shù)
- 04-02c語言編寫函數(shù)冒泡排序 c語言冒泡排序法函數(shù)
- 04-02c語言沒有round函數(shù) round c語言
- 04-02c語言分段函數(shù)怎么求 用c語言求分段函數(shù)
- 04-02C語言中怎么打出三角函數(shù) c語言中怎么打出三角函數(shù)的值
- 04-02c語言調(diào)用函數(shù)求fibo C語言調(diào)用函數(shù)求階乘


閱讀排行
本欄相關(guān)
- 04-02c語言函數(shù)調(diào)用后清空內(nèi)存 c語言調(diào)用
- 04-02func函數(shù)+在C語言 func函數(shù)在c語言中
- 04-02c語言的正則匹配函數(shù) c語言正則表達
- 04-02c語言用函數(shù)寫分段 用c語言表示分段
- 04-02c語言中對數(shù)函數(shù)的表達式 c語言中對
- 04-02c語言編寫函數(shù)冒泡排序 c語言冒泡排
- 04-02c語言沒有round函數(shù) round c語言
- 04-02c語言分段函數(shù)怎么求 用c語言求分段
- 04-02C語言中怎么打出三角函數(shù) c語言中怎
- 04-02c語言調(diào)用函數(shù)求fibo C語言調(diào)用函數(shù)求
隨機閱讀
- 01-11Mac OSX 打開原生自帶讀寫NTFS功能(圖文
- 04-02jquery與jsp,用jquery
- 08-05dedecms(織夢)副欄目數(shù)量限制代碼修改
- 01-10C#中split用法實例總結(jié)
- 01-10delphi制作wav文件的方法
- 01-10SublimeText編譯C開發(fā)環(huán)境設(shè)置
- 08-05織夢dedecms什么時候用欄目交叉功能?
- 01-11ajax實現(xiàn)頁面的局部加載
- 08-05DEDE織夢data目錄下的sessions文件夾有什
- 01-10使用C語言求解撲克牌的順子及n個骰子