C程序中如何获取shell命令执行结果和返回值

如果在C程序中调用了shell命令,那么往往希望得到输出结果以及命令执行的返回布尔值。在这里分为两步来处理:
1.使用 popenpclose 来执行shell命令;
2.使用‘echo $?’来获取上一条指令执行状态,如果为0那么标识成功执行,否则标识执行出错;

代码如下:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <errno.h>int main(void)
{FILE *stream = NULL;char buf[1024];int ret;memset(buf, 0, sizeof(buf));if ((stream = popen("ifconfig", "r")) == NULL) {fprintf(stderr, "%s", strerror(errno));return -1;}/* output the message */while (fgets(buf, sizeof(buf), stream) != NULL) {printf("%s", buf);}if ((stream = popen("echo $?", "r")) == NULL) {fprintf(stderr, "%s", strerror(errno));return -1;}/* output the message */while (fgets(buf, sizeof(buf), stream) != NULL) {printf("%s", buf);}ret = atoi(buf);if (ret)printf("command excutes succeed!\n");else printf("command excutes fail!\n");
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/403319.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

去除le-table表格的hover效果

css代码&#xff1a; 如果不生效&#xff0c;就单独的放在一个style标签内&#xff0c;但是单独放会影响全局 <style>/* 首先去除默认的hover效果 *//deep/.el-table--enable-row-hover .el-table__body tr:hover > td {background-color: rgba(0, 0, 0, 0) !importa…

使用 Chrome Timeline 来优化页面性能

使用 Chrome Timeline 来优化页面性能有时候&#xff0c;我们就是会不由自主地写出一些低效的代码&#xff0c;严重影响页面运行的效率。或者我们接手的项目中&#xff0c;前人写出来的代码千奇百怪&#xff0c;比如为了一个 Canvas 特效需要同时绘制 600 个三角形&#xff0c;…

bash shell函数的定义及变量的简单说明

From: http://blog.sina.com.cn/s/blog_4ce3a68a0100i77a.html 函数&#xff1a; “函数是一种脚本内脚本”&#xff0c;程序员很难想像没有函数的日子&#xff0c;至少我会比较痛恨。 所以了解函数的定义也就是学习bash的一大要点了。 函数大大增强了shell的编程能力&…

脚本中判断Shell命令执行结果

与C程序中判断同理&#xff0c;只是语法差异&#xff0c;提一点&#xff0c;在这里尤其需要注意 Shell 的语法规则:-D。 Code&#xff1a; #&#xff01;bin/shifconfig if [ $? -eq 0 ]; thenecho "succeed!" elseecho "failed!" fi

el-table点击某行高亮;el-table设置hover效果;监听el-table点击某行变色;去除el-table的hover效果;监听el-table的hover事件

以下代码可直接复制使用 无需任何修改 注意&#xff1a;如果最后的的css不生效&#xff0c;就单独的放在一个style标签内 重点解释&#xff1a; :row-class-name"tableRowClassName" //这个是设置返回某行的类名 :stripe"false" …

centos 查看版本

From: http://www.cnblogs.com/hitwtx/archive/2012/02/13/2349742.html 有以下命令可以查看&#xff1a; # lsb_release -a LSB Version: :core-3.1-ia32:core-3.1-noarch:graphics-3.1-ia32:graphics-3.1-noarch Distributor ID: CentOS Description: CentOS release …

SQL Server replication requires the actual server name to make a connection to the server.错误解决...

今天&#xff0c;在作数据发库时&#xff0c;出现如下错误&#xff1a; "SQL Server replication requires the actual server name to make a connection to the server. Connections through a server alias, IP address, or any other alternate name are not supporte…

el-table使用fixed后,最后一行显示不全;el-table设置fixed后,最后一行被遮挡。

解决代码&#xff1a; .el-table {/deep/ .el-table__body-wrapper {overflow-x: scroll !important;//直接设置横轴内容滚动条 即可撑高高度 还不影响使用} }一、情景&#xff1a;给element的el-table设置fixed固定后&#xff0c;最后一行显示部分被遮挡。有的说是有时出现这…

OpenWrt

Contents 1 The Router 1.1 Getting started  1.1.1 Installation  1.1.2 Initial configuration  1.1.3 Failsafe mode 1.2 Configuring OpenWrt  1.2.1 Network  1.2.2 Wireless 1.3 Advanced configuration  1.3.1 Hotplug  1.3.2 Init scripts  1.3.3 …

bash shell函数中返回任意值的四种方法

From: http://www.jbxue.com/article/11322.html 本文介绍下&#xff0c;在bash shell编程中&#xff0c;从函数中返回任意值的几种方法&#xff0c;有需要的朋友参考下。在bash中&#xff0c;函数更像一个子程序&#xff0c;即其返回值&#xff0c;只能是一个数字&#xff0c…

Linux:ps命令以及进程状态详解

Linux 查看进程PS命令详细介绍 1.ps简介 ps命令就是最根本相应情况下也是相当强大地进程查看命令.运用该命令可以确定有哪些进程正在运行和运行地状态、进程是否结束、进程有没有僵死、哪些进程占用了过多地资源等等.总之大部分信息均为可以通过执行该命令得到地. 2. ps命令及其…

修改el-table滚动条样式

.el-table {// 滚动条的宽度/deep/ .el-table__body-wrapper::-webkit-scrollbar {width: 10px; // 横向滚动条height: 10px; // 纵向滚动条 必写}// 滚动条的滑块/deep/ .el-table__body-wrapper::-webkit-scrollbar-thumb {background-color: #1fff;//颜色border-radius: 5px…

NQueens, NQueens2 N皇后问题,递归回溯

N皇后的规则&#xff1a;任意两个皇后不在同一行&#xff0c;不在同一列&#xff0c;不在同一斜线上。 算法分析&#xff1a;这种问题就用回溯法。深度搜索然后回溯。用一个数组记录每一行皇后的位置&#xff0c;下标代表行&#xff0c;值代表列。对行深度搜索。 public class …

Mac OS 如何更改文件的默认打开方式

From: http://www.ipc.me/os-x-xiao-ji-qiao.html 和使用 Windows PC 一样&#xff0c;人们在 Mac 电脑中往往也需要用多种应用开启同一种文件。并且&#xff0c;由于环境、习惯以及个人喜好不同&#xff0c;用户常常会希望更改某种文件的默认打开方式…… 在 OS X 系统下&a…

VMware “Transport(VMDB)error -44:Message”

这种情况说明虚拟机的一个服务没有开启&#xff0c;在本机中找到服务&#xff1a; 1. “打开运行”-“services.msc”回车。 2. 找到VMware Authorization Service这个服务&#xff0c;启动起来就OK了。

linux-shell面试题 之二

标签&#xff1a;面试题 shell 正则表达式 开发 sed 原创作品&#xff0c;允许转载&#xff0c;转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://president.blog.51cto.com/4990508/854249由于工作的关系&#xff0c;收集了很多的s…

python基础学习1-列表使用

python 列表相关操作方法namelist [a,b,c,d,1,2,3,4]namelist1 [a,b,c,d,1,2,3,4]print(namelist)print(namelist[1])#取得第2个print(namelist[-1])#取得最后一个 索引从最后开始 -1,-2,-3print(namelist[0:3]) #取得列表范围 0到2 3个值 不包含 3序列上的值print(namelis…

mac下卸载jdk1.7

From: http://blog.sina.com.cn/s/blog_6940cab30102vbtp.html 目前mac上有一些软件还不支持jdk1.7,只能卸载1.7,恢复到1.6,下面二个链接是官网给出的卸载方法: http://www.java.com/zh_CN/download/help/mac_uninstall_java.xml http://docs.oracle.com/javase/7/docs/webnot…

VMware 提示”此虚拟机被配置为64位操作系统,然而,64位操作无法进行”

这种情况说明CPU没有开启虚拟化&#xff0c;需要进入主板BIOS界面进行设置&#xff0c;设置选项位置因主板而异&#xff0c;可能在 Security/Advanced/Configuration 选项下&#xff0c;以 Intel 为例&#xff0c;找到 Intel Virtual Technology / Intel HT Technology 选项&am…

el-table列宽自适应;el-table表格的列根据内容自动撑满;el-table内容换行问题;

原文链接 重点就一个方法 :width"flexColumnWidth(‘date’,tableData)" 第一个参数是这个列的字段 第二个参数是这个表格的数据 只需要给对应的列 el-table-column 标签加上此方法 即可做到此列自适应 其他的列想要自适应宽度 同样使用 :width 方法即可 此段代码可…