>>231
test.c:
#include <lua.h>
#include <lauxlib.h>
#include <lualib.h>
int main(int argc, char **argv) {
  int index, i;
  lua_State *L, *co;
  L = lua_open();
  lua_baselibopen(L);
  index = lua_gettop(L);
  lua_dofile(L, "test.lua");
  lua_settop(L, index);
  lua_getglobal(L, "coroutine");
  lua_pushstring(L, "create");
  lua_gettable(L, -2);
  lua_getglobal(L, "co_func");
  lua_call(L, 1, 1);
  co = lua_tothread(L, -1);
  lua_setglobal(L, "co");
  index = lua_gettop(L);
  for (i = 0; i < 4; i++) {
  lua_pushnumber(co, i);
  printf("c: resume=%d\n", lua_resume(co, 1));
  printf("c: co top=%d, L top=%d\n", lua_gettop(co), lua_gettop(L));
  printf("c: co result1=%lf\n", lua_tonumber(co, -2));
  printf("c: co result2=%lf\n", lua_tonumber(co, -1));
  }
  lua_close(L);
  return 0;
}