在c中重新加载linux服务

我想在c和cgi代码中重启 linux服务,如apache,bind,proftpd等.

我使用system()来做到这一点,例如:

system ("service httpd reload");

我也设置suid编译程序并运行它.但不工作并返回权限错误.

我该怎么办 ?

编辑:
我的apache记录错误:

[Wed Dec 21 21:07:13 2011] [error] [client *] cannot remove `/var/run/httpd.pid'
[Wed Dec 21 21:07:13 2011] [error] [client *] : Permission denied
[Wed Dec 21 21:07:13 2011] [error] [client *]
[Wed Dec 21 21:07:13 2011] [error] [client *] touch:
[Wed Dec 21 21:07:13 2011] [error] [client *] cannot touch `/var/lock/subsys/httpd'
[Wed Dec 21 21:07:13 2011] [error] [client *] : Permission denied

和命名,proftpd等相同的日志

解决方法

这里有几件事需要检查:

>确保已编译的程序具有suid root(即程序的所有者是root).>确保在没有“noexec”选项的情况下挂载正在执行程序的分区.

相关文章

一.C语言中的static关键字 在C语言中,static可以用来修饰局...
浅谈C/C++中的指针和数组(二) 前面已经讨论了指针...
浅谈C/C++中的指针和数组(一)指针是C/C++...
从两个例子分析C语言的声明 在读《C专家编程》一书的第三章时...
C语言文件操作解析(一)在讨论C语言文件操作之前,先了解一下...
C语言文件操作解析(三) 在前面已经讨论了文件打开操作,下面...