php调用Linux命令启动程序(root权限)
2010-01-21 23:57
603 查看
1.
<?php
echo "调用正在进行……<br>";
$result = system('/usr/local/apache2/htdocs/asterisk/ast_start');
?>
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
2.在/usr/local/apache2/htdocs/asterisk/目录下建立文件ast_start.c
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <unistd.h>
int main()
{
uid_t uid ,euid;
int id;
uid = getuid() ;
euid = geteuid();
//printf("my uid :%u/n",getuid()); //这里显示的是当前的uid 可以注释掉.
//printf("my euid :%u/n",geteuid()); //这里显示的是当前的euid
if(setreuid(euid, uid)) //交换这两个id
{
perror("setreuid");
}
//printf("/n/nafter setreuid uid :%u/n",getuid());
//printf("afer sertreuid euid :%u/n",geteuid());
id = system( "asterisk" );
//printf( "/nid=%d/n",id );
//id=-1:出现错误
//id=0:调用成功但是没有出现子进程
//id>0:成功退出的子进程的id
return 0;
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
3. 保存并编译ast_start.c
#gcc -o ast_start -Wall ast_start.c
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
4. 赋权限
#chmod u+s ./ast_start
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
5. 在浏览器中预览结果
附:关掉一个进程ast_stop.c
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <unistd.h>
int main()
{
uid_t uid ,euid;
int id;
uid = getuid() ;
euid = geteuid();
if(setreuid(euid, uid)) //交换这两个id
{
perror("setreuid");
}
id = system( "kill -9 $(pidof asterisk)" );
//pidof获得进程asterisk的ID号
return 0;
}
<?php
echo "调用正在进行……<br>";
$result = system('/usr/local/apache2/htdocs/asterisk/ast_start');
?>
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
2.在/usr/local/apache2/htdocs/asterisk/目录下建立文件ast_start.c
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <unistd.h>
int main()
{
uid_t uid ,euid;
int id;
uid = getuid() ;
euid = geteuid();
//printf("my uid :%u/n",getuid()); //这里显示的是当前的uid 可以注释掉.
//printf("my euid :%u/n",geteuid()); //这里显示的是当前的euid
if(setreuid(euid, uid)) //交换这两个id
{
perror("setreuid");
}
//printf("/n/nafter setreuid uid :%u/n",getuid());
//printf("afer sertreuid euid :%u/n",geteuid());
id = system( "asterisk" );
//printf( "/nid=%d/n",id );
//id=-1:出现错误
//id=0:调用成功但是没有出现子进程
//id>0:成功退出的子进程的id
return 0;
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
3. 保存并编译ast_start.c
#gcc -o ast_start -Wall ast_start.c
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
4. 赋权限
#chmod u+s ./ast_start
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
5. 在浏览器中预览结果
附:关掉一个进程ast_stop.c
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <unistd.h>
int main()
{
uid_t uid ,euid;
int id;
uid = getuid() ;
euid = geteuid();
if(setreuid(euid, uid)) //交换这两个id
{
perror("setreuid");
}
id = system( "kill -9 $(pidof asterisk)" );
//pidof获得进程asterisk的ID号
return 0;
}
相关文章推荐
- 2010年1月22日存档:PHP调用linux命令启动和停止asterisk
- Android 截图程序实现 需要root权限 (调用linux 命令)
- 在linux如何在程序中调用shell命令启动另一个程序
- linux下通过命令启动多个终端执行相应的命令和程序
- linux操作之:设置系统启动时,自动启动一些程序,或者执行一些命令
- 如何在java程序中调用linux命令或者shell脚本
- linux C程序中调用shell终端的命令
- Java程序调用Linux命令时的重定向问题
- 如何在java程序中调用linux命令或者shell脚本
- Linux也有自己的cls命令,clear。但在程序中如何调用昵?
- 安卓程序中调用 linux 命令
- linux定时启动程序的命令详解
- php 调用系统命令 执行外部程序
- Android开发:java程序调用linux命令(高级)
- MySQL启动连接的命令以及与PHP程序连接的基本语法
- C语言程序直接调用Linux命令
- java程序中调用linux命令
- linux下运行C程序启动shell命令
- Linux C程序操作Mysql 调用PHP采集淘宝商品
- linux C程序中调用shell终端的命令