在本期中,本站将为您带来关于如何在linux中使用系统功能的信息。文章内容丰富,从专业角度分析叙述。看完这篇文章,希望你能有所收获。
系统(执行外壳命令)
相关函数
fork,execve,waitpid,popen
头文件
# i ncludestdlib.h
定义函数
int系统(const char * string);
功能描述
System()将调用fork()生成子进程,子进程调用/bin/sh-c字符串执行参数字符串表示的命令。该命令执行后,将返回到最初调用的进程。在调用system()时,SIGCHLD信号被暂时挂起,SIGINT和SIGQUIT信号被忽略。返回值
=-1:出现错误
=0:呼叫成功,但未出现子进程
0:成功退出子进程的id
如果system()调用/bin/sh失败,则返回127,其他失败原因返回-1。如果参数字符串是空指针,则返回非零值。
如果system()调用成功,执行shell命令后会返回返回值,但是这个返回值也可能是system()调用to /bin/sh失败返回的127,所以最好再次检查errno,确认执行成功。
附加信息
在使用SUID/SGID权限编写程序时,不要使用system().system()将继承环境变量,这可能会导致系统安全问题。
模型
# i ncludestdlib.h
main()
{
system(" ls-al/etc/passwd/etc/shadow ");
}执行结果:
-rw-r - r - 1根705 Sep 3 13 :52 /etc/passwd
-r-1 root root root 572 Sep 2 15 :34/etc/shado例2:
char tmp[];
sprintf(tmp,'/bin/mount -t vfat %s /mnt/usb ',dev);
系统(tmp);
其中dev为/dev/sda1。
以上是本站分享的linux中如何使用系统功能,如有类似疑惑,请参考以上分析了解。如果你想了解更多,请关注本站