C - system() 不断返回 127

  • 本文关键字:返回 system c linux bash
  • 更新时间 :
  • 英文 :


我正在开发一个共享库L,供其他系统服务S使用。在我的程序中,我需要调用一个小程序P,它使用Oracle共享库。

小程序P打包安装正确,PATHLD_LIBRARY_PATHORACLE_HOME等环境变量设置正确。我可以在命令行上运行P没有任何问题。

但是当服务S调用我的库L时,它通过system()P运行小程序,它给了我一个返回代码127。我用谷歌搜索过,人们说这是一个command not found错误,可能是一个PATH问题,所以我尝试使用绝对路径,如下所示

int status = system("/usr/bin/myprog --args");
if (status < 0) { ... }
ret = WEXITSTATUS(status);

ret仍然等于127.

请问有什么想法吗?谢谢。

更新事实证明,服务S是通过命令daemon启动的,在其init.d脚本中,我找到了以下行:

daemon /usr/bin/myserv

如果我明确地export我所有的环境变量(PATHORACLE_HOMELD_LIBRARY_PATH),它就可以工作了。我不知道daemon是否消除了我的环境变量。

本文摘自手册页

,供system()
-----------------------------------------------------------------
The value returned is -1 on  error  (e.g.,  fork(2)  failed),  and  the
return  status  of the command otherwise.  
This latter return status is
in the format specified in wait(2).  
Thus, the exit code of the command
will  be  WEXITSTATUS(status).   
In case /bin/sh could not be executed,
the exit status will be that of a command that does exit(127)."
-----------------------------------------------------------------

表示 127 表示无法执行/bin/sh

好了,我找到了答案:如何让unix服务看到环境变量?,环境变量在init.d脚本中被删除了。

相关内容

  • 没有找到相关文章

最新更新