lua os.execute()返回错误的值

时间:2013-10-26 11:09:13

标签: lua

有问题:

 local stat = assert(os.execute("/usr/bin/pgrep -f 'tail -F /opt/aaa' >& /dev/null"))
 print(stat)  --> 0

但是当我在bash中键入pgrep -f 'tail -F /opt/aaa' >& /dev/null,然后调用echo $?时它会返回1.有没有人遇到过这个,或者知道原因;-)发生了什么?

1 个答案:

答案 0 :(得分:3)

对我来说似乎不是Lua问题,os.execute只是打电话给system

 static int os_execute (lua_State *L) {
    lua_pushinteger(L, system(luaL_optstring(L, 1, NULL)));
    return 1;
 }

如果您尝试使用C替代品,则会得到正确的结果代码吗?

 #include <stdio.h>
 #include <string.h>

 int main ()
 {
    char command[100];
    int result;

    strcpy( command, "/usr/bin/pgrep -f 'tail -F /opt/aaa' >& /dev/null" );
    result = system(command);

    return(0);
  }