C语言运行脚本程序方法

注意:执行的命令中带有双引号的话,一定要加 '\'进行转义

1.返回执行状态码:

command参数为需要执行的命令   

int executeCommand_noreq(char* command)
{
    int returnValue;   // 保存命令执行后的返回值
    returnValue = system(command); // 调用system()函数执行命令并将返回值保存到returnValue变量中
    if (WIFEXITED(returnValue)) { // 判断命令是否正常退出
        int exitStatus = WEXITSTATUS(returnValue); // 获取命令的退出状态(返回值)
        return exitStatus;
    } else {
        return -1;
    }
}

2.返回命令执行结果的输出:

command参数为需要执行的命令语句,result为malloc的一段内存串

也可以在本函数中malloc,就需要改一改函数,返回这个result

不管在函数内或外,都记得释放掉该内存

void executeCommand(char* command,char* result)
{
//    char* result = malloc(COMMEND_BUFSIZE); // 分配一块内存来存储结果
    memset(result, 0, COMMEND_BUFSIZE); // 初始化为0,以防数据残留
    // 执行命令并将标准输出连接到文件流中
    FILE* fp = popen(command, "r");
    if (!fp)
    {
        perror("popen failed");
        return ;
    }
    // 读取文件流中的数据
    char buf[COMMEND_BUFSIZE]={0};
    memset(buf, '\0', COMMEND_BUFSIZE);
    while (fgets(buf, COMMEND_BUFSIZE, fp))
    {
        if(strlen(result) + strlen(buf) > COMMEND_BUFSIZE){
            printf("shell返回结果超出buffer size,进行截断\n");
            break;
        }
        strcat(result, buf); // 将读取到的数据添加到结果中
    }
    int  st=pclose(fp);
    if(st==-1)
    {
        return ;
    }
    result[strlen(result)-1] = '\0';
    return ;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值