方法就是fork一个子进程,并创建一个匿名管道,在子进程中执行shell命令,并将其标准输出dup到匿名管道的输入端,父进程从管道 中读取,即可获得shell命令的输出,代码如下: /** * 增强的system函数,能够返回system调用的输出 * * @param[in] cmdstring 调用外部程序或脚本的命令串 * @param[out] buf 返回外部命令...
可以执行 shell 命令; 可以获取命令输出内容; 2.2 扩展性 由于应用场景本就广泛,因此扩展性较好。 此函数可以执行任意命令,并捕获命令输出结果。 实际使用过程中可以把此函数作为最底层接口,然后层层封装,实现自己想要的功能。 2.3 测试环境 2.3.1 Ubuntu 找到此方法时,我首先在 Ubuntu 中进行了测试,环境如下: 系统...
#include<stdio.h>intmain(void){FILE*file=popen("date","r");if(file==NULL){perror("popen");return1;}charbuffer[256]={0};while(fgets(buffer,255,file)!=NULL){printf("example->%s",buffer);}pclose(file);return0;} Tue
pclose() 函数关闭标准 I/O 流,等待命令执行结束,然后返回 shell 的终止状态。如果 shell 不能被执行,则 pclose() 返回的终止状态与 shell 已执行 exit 一样。 popen(3) - Linux manual page type"r" 则文件指针连接到 command 的标准输出; "w" 则文件指针连接到 command 的标准输入。 command执行的命令。
以前在C程序中习惯用system来调用执行shell命令,但是这样有个缺点,就是只能得到执行的shell命令的返回值,如果想得到其输出,只能通过一些间接的方法,比如修改shell命令让它的输出重定向到一文件中,然后c程序再从该文件获取。这样的缺点是需要磁盘操作,降低了程序的执行效率。
在C语言中,可以使用系统函数system()来执行shell命令,并获取其返回值。 system()函数的原型如下: int system(const char *command); 复制代码 command参数是一个字符串,用于指定要执行的shell命令。system()函数会在新的子进程中执行该命令,并返回子进程的退出状态码。 要获取shell命令的返回值,可以使用system()...
在Linux下,我们可以使用C语言调用系统函数来执行Shell命令。具体步骤如下: 1. 头文件引入 首先,在C程序中,我们需要引入`stdlib.h`和`stdio.h`头文件。 “`c #include #include “` 2. 编写执行Shell命令的代码 下面是一个示例代码,用于执行Shell命令并输出结果: ...
sa.bInheritHandle = TRUE; //输出重定向 if (!CreatePipe(&hRead,&hWrite,&sa,0)){ printf("创建匿名管道失败");return FALSE;} STARTUPINFO si;PROCESS_INFORMATION pi;ZeroMemory(&si,sizeof(STARTUPINFO));si.cb = sizeof(STARTUPINFO);si.hStdInput=hRead;si.hStdError = GetStd...
C语言执行shell命令,获取标准输出和错误输出 刚做了一个小功能,需要用C写一个命令处理函数,用shell执行这个命令,然后获取标准输出和错误输出,代码有点麻烦,放在:github,好用的话,记得点个star哈。
1.type为“r”时,管道连接到shell子进程的标准输出, 2.type为“w”时,管道连接到shell子进程的标准输入 “r”就能获取shell命令的执行输出结果了。返回值为FILE *文件指针,使用fread即可从文件流指针 中读出输出结果。 实例: #include<stdio.h> intmain(void) ...