简介
#include<stdio.h>
FILE* popen(const char *command, const char *type);
/*
创建管道并启动command的进程
type:"r" 将调用进程读进command的标准输出
type "w" 将调用进程写到command的标准输入
注意:调用popen不对标准错误输出做任何处理,只有标准输出才被重定向到由他创建的管道
command产生的错误提示,由他自己输出,非popen
*/
int pclose(FILE * STREAM);
代码
myhead.h
#ifndef MYHEAD_H_
#define MYHEAD_H_
#include<stdio.h>
#include<sys/types.h>
#include<sys/wait.h>
#include<unistd.h>
#include<stdlib.h>
#include<errno.h>
#include<string.h>
#include<fcntl.h>
#include<sys/stat.h>
#define MAXLINE 4096
#endif
mian.c
#include"myhead.h"
int main()
{
size_t n;
char buff[MAXLINE], command[MAXLINE];
FILE *fp;
fgets(buff, MAXLINE, stdin);
n = strlen(buff);
if(buff[n-1] == '\n')
{
n--;
}
snprintf(command, sizeof(command), "%s", buff);
fp = popen(command, "r");
while(NULL != (fgets(buff, MAXLINE, fp)))
{
fputs(buff, stdout);
}
pclose(fp);
return 0;
}
编译后执行文件,输入shell命令即可例如 ls