c - system() keeps returning 127 -


i developing shared-library l used other system service s. in program need call small program p, uses oracle shared libraries.

the small program p packaged , installed correctly, , environment variables, such path,ld_library_path , oracle_home set correctly. can run p on command line without problem.

but when service s call library l runs small program p via system(), gives me return code 127. i've googled, people says it's command not found error, path issue, i've tried absolute path following

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

ret still equals 127.

any idea please ? thank you.

update turns out service s launched via command daemon, in init.d script, have found following line:

daemon /usr/bin/myserv 

if export explicitly environment variables (path, oracle_home , ld_library_path), works. don't know if daemon eliminates environment variables.

this excerpt man page system()

----------------------------------------------------------------- value returned -1 on  error  (e.g.,  fork(2)  failed),  ,     return  status  of command otherwise.   latter return status    in format specified in wait(2).   thus, exit code of command      wexitstatus(status).    in case /bin/sh not executed,    exit status of command exit(127)." ----------------------------------------------------------------- 

indicates 127 means /bin/sh not executed.


Comments

Popular posts from this blog

scala - 'wrong top statement declaration' when using slick in IntelliJ -

c# - DevExpress.Wpf.Grid.InfiniteGridSizeException was unhandled -

PySide and Qt Properties: Connecting signals from Python to QML -