system - execute a shell command
#include <stdlib.h>
int system(const char *command);
system的具体实现内部有哪些系统调用?
fork
、exec
、waitpid
system返回值
command
=null,command processor(命令处理器)
可获得时,返回值非0fork
或者waitpid
返回错误值是EINTR
以外的错误值,system
返回-1,并且设置errno
- 如果
exec
失败,意味着shell
不能只行,返回值类似于shell执行exit(127)
- 成功执行:返回值是
shell
的中止状态
使用system
的优势!
相对于直接调用fork和exec
,system
能够处理error
和处理signal
。
绝对不要在set-user-ID
、set-group-ID
程序里调用system.可以直接使用fork和exec
这样做会产生安全漏洞