前言
system()系统函数在编程过程中经常被调用,在linux下,可以用来执行shell命令,但在平常的工作中,我们很多时候需要执行的shell命令需要接收用户的输入,并对shell命令执行后的返回结果再做相应处理,此时,我们需要对system函数做一下封装。
用法实例及说明
获取Ubuntu下指定网口的相关信息
- 编程环境: ubuntu
- 相关函数:
fork,execve,waitpid,popen - 表头文件:
#include <stdlib.h> - 定义函数:
int system(const char * string); - 函数说明:
system()会调用fork()产生子进程,由子进程来调用/bin/sh-c string来执行参数string字符串所代表的命令,此命令执行完后随即返回原调用的进程。在调用system()期间SIGCHLD信号会被暂时搁置,SIGINT和SIGQUIT信号则会被忽略。 - 返回值:
如果fork()失败 返回-1:出现错误
如果exec()失败,表示不能执行Shell,返回值相当于Shell执行了exit(127)
如果执行成功则返回子Shell的终止状态
如果system()在调用/bin/sh时失败则返回127,其他失败原因返回-1。若参数string为空指针(NULL),则返回非零值>;。如果system()调用成功则最后会返回执行shell命令后的返回值,但是此返回值也有可能为system()调用/bin/sh失败所返回的127,因此最好能再检查errno来确认执行成功。
函数接口
void do_system(const char* format, ...)int get_cmd_value (char *cmd_str, char *value, int len)void get_cmd_result(const char *cmd, char *result)
接口函数实现
/**********************************************************************************
本文介绍了如何在C语言中封装system函数,以便在Linux环境下执行shell命令并处理用户输入。通过提供的函数接口,可以更方便地控制shell命令的执行,并获取命令执行后的返回结果,同时处理可能的错误情况。
最低0.47元/天 解锁文章
6283

被折叠的 条评论
为什么被折叠?



