I have a script file using start-stop-daemon:
trap "" 1
(
echo "INFO Starting $BinName application"
cd ${APPLICATION_ROOT}
if [ -e ${DEVOUT} ]; then
mv ${DEVOUT} ${DEVOUTOLD}
fi
if [ -e ${DEVERR} ]; then
mv ${DEVERR} ${DEVERROLD}
fi
if [ -e ${VALGRIND_LOG} ]; then
mv ${VALGRIND_LOG} ${VALGRIND_LOG_OLD}
fi
# rm ${VALGRIND_LOG}
HASHCODE=$(sha1sum ${APPLICATION_BIN}/${BinName}|cut -b0-40)
if [ ! -z "$VALGRIND_ENABLE" ]; then
VALGRIND_CMD="$VALGRIND --log-file=$VALGRIND_LOG"
fi
start-stop-daemon -S -b -m -p ${PidFileName} -c service:c10 --startas /bin/bash -- -c "/usr/bin/nohup $VALGRIND_CMD ${APPLICATION_BIN}/${BinName} -j 8019 -O -H $HASHCODE 2>${DEVERR} > ${DEVOUT} &"
)
sleep 1
pid=$(mypidof $BinName)
echo $pid > $PidFileName
if [ X$pid != "X" ]; then
RETVAL=0;
echo "INFO $BinName running with pid=${pid}"
else
RETVAL=11;
echo "ERROR Start $BinName failed !!!"
fi
I want to execute the script from C++ code. I tried to use system()/popen()/execv() but start-stop-daemon doesn't run (process it called is not running). I don't know if I have missed anything to do.
If I run the script file directly, start-stop-daemon works properly.