Linux编程时候,如果我们需要调用shell命令或脚本通常使用system方法。如system("ls")
该方法返回值为0或-1,即成功或失败。而有的时候我们想要获取shell命令执行的结果,该怎么办呢?
我们可以将shell命令结果重定向到文件中,然后再读取这个文件,如:
system("ls>result.txt")
FILE *fp = fopen(result, "r")
当然我们也可以直接使用管道,如下面示例:
#include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <sys/types.h> #include <strings.h> #include <string.h> char* shellcmd(char* cmd, char* buff, int size) { char temp[256]; FILE* fp = NULL; int offset = 0; int len; fp = popen(cmd, "r"); if(fp == NULL) { return NULL; } while(fgets(temp, sizeof(temp), fp) != NULL) { len = strlen(temp); if(offset + len < size) { strcpy(buff+offset, temp); offset += len; } else { buff[offset] = 0; break; } } if(fp != NULL) { pclose(fp); } return buff; } int main(void) { char buff[1024]; memset(buff, 0, sizeof(buff)); printf("%s", shellcmd("ls", buff, sizeof(buff))); return 0; }
注意:C语言调用shell命令是新建一个进程执行的,执行速度很慢,最好不要C、Shell混合编程。
以上这篇C语言获取Shell返回结果的实现方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持小牛知识库。
本文向大家介绍C语言实现返回字符串函数的四种方法,包括了C语言实现返回字符串函数的四种方法的使用技巧和注意事项,需要的朋友参考一下 前言 C语言返回字符串函数共有四种方式,分别如下: 使用堆空间,返回申请的堆地址,注意释放 函数参数传递指针,返回该指针 返回函数内定义的静态变量(共享) 返回全局变量 下面来看看详细的介绍 其实就是要返回一个有效的指针
本文向大家介绍Objective-C语言返回值,包括了Objective-C语言返回值的使用技巧和注意事项,需要的朋友参考一下 示例 当要从方法返回值时,请将要返回的类型放在第一组括号中。 您要返回的值放在return关键字之后;
问题内容: 已经晚了,所以这一定是愚蠢的。我已将LinqPad连接到我的数据库,但似乎无法获得最简单查询的结果。 当我运行它时,LinqPad说它成功执行了(C#语句模式)。什么都不会被搁置。 我可以编写以下非常简单的Lambda(C#表达式模式): 那行得通。为什么?我更喜欢使用非lambda查询构建功能。我敢肯定,这一切都是愚蠢的。 问题答案: 我希望在声明模式下,您必须执行类似call的操作
问题内容: 我想获取动态生成的HQL查询的结果计数,而无需实际获取结果列表。说我的查询是这样的: 我在Hibernate文档中看到: 您可以计算查询结果的数量而无需返回它们: 我怀疑应该用查询替换 .... ,但这不起作用,因为HQL不支持FROM中的子选择。 那么,我应该如何计算动态生成的HQL查询的结果?我认为通过执行它并获取结果列表的.size()可能是不必要的开销。 干杯! 更新: 我使用
本文向大家介绍C语言实现单链表实现方法,包括了C语言实现单链表实现方法的使用技巧和注意事项,需要的朋友参考一下 C语言实现单链表实现方法 链表和我们之前实现过的顺序表一样,都是简单的数据结构,链表分为单向链表、双向链表、循环链表。而单向链表又分为两种实现方法,一种为带头节点的单链表,一种为不带头节点的单链表。我们来具体看看不带头节点的单链表的实现 单链表:它是一种链式存储的线性表,用一组地址任意的
函数的返回值是指函数被调用之后,执行函数体中的代码所得到的结果,这个结果通过 return 语句返回。 return 语句的一般形式为: 或者: 有没有 都是正确的,为了简明,一般也不写 。例如: 对C语言返回值的说明: 1) 没有返回值的函数为空类型,用 表示。例如: 一旦函数的返回值类型被定义为 void,就不能再接收它的值了。例如,下面的语句是错误的: 为了使程序有良好的可读性并减少出错,