TEST(spawn, posix_spawnattr_setpgroup_posix_spawnattr_getpgroup) { posix_spawnattr_t sa; ASSERT_EQ(0, posix_spawnattr_init(&sa)); ASSERT_EQ(0, posix_spawnattr_setpgroup(&sa, 123)); pid_t g; ASSERT_EQ(0, posix_spawnattr_getpgroup(&sa, &g)); ASSERT_EQ(123, g); ASSERT_EQ(0, posix_spawnattr_destroy(&sa)); }
static int l_posix_spawnattr_getpgroup(lua_State *L) { int r; posix_spawnattr_t *attr = luaL_checkudata(L, 1, "posix_spawnattr_t"); pid_t pgroup; if (0 != (r = posix_spawnattr_getpgroup(attr, &pgroup))) { lua_pushnil(L); lua_pushstring(L, strerror(r)); lua_pushinteger(L, r); return 3; } lua_pushinteger(L, pgroup); return 1; }