场景:
java端调用阿里云api创建ecs机器,创建完成之后会拉起我这边用C语言写的程序。该程序中有一步是启动pptp服务。
问题是通过调用java端启动的程序,一直无法拉起pptpd服务,手动杀掉程序,然后再启动就没有问题。
如:
system("service pptpd restart"); 这样是无法启动的。
system("service pptpd restart & > /dev/null 2>&1"); 这样也无法启动
system("service pptpd restart > /dev/null 2>&1"); 这样就可以启动
执行pptpd服务启动的命令是在线程中执行的。
算是解决了问题,但是没有找到合理的解释,感觉有点是centos环境启动权限的问题。记录一下。
更新:目测是环境变量的问题,system("source /etc/profile; service xl2tpd restart &> /dev/null 2>&1");用这样的方式执行就可以成功。