c linux 终端命令,linux 下c语言调用终端命令

#include

#include

#include

#define MAX_SIZE 1024

int main()

{

FILE *fstream = NULL;

int error=0;

char buff[MAX_SIZE]={0};

if(NULL == (fstream=popen("ls -r","w")))//这个应该是写方式的管道

{

fprintf(stderr,"execute command failed:%s",strerror(error));

return -1;

}

if(NULL != fgets(buff,sizeof(buff),fstream))

{

printf("%s",buff);

}

else

{

pclose(fstream);

return -1;

}

pclose(fstream);

printf("Hello world!\n");

return 0;

}

上面的函数功能,就是ls -r这个命令的结果输出到调试窗口

下面是输入的版本:主要是调用popen函数,这个函数的缺点是要默认的开启一个sh

#include

#include

#include

#include

#define MAX_SIZE 1024

void InputShell(char * shell)

{

FILE *read_fp = NULL;

char buffer[MAX_SIZE];

int chars_read = 0;

memset(buffer, 0, sizeof(buffer));

read_fp = popen(shell, "r");

if (read_fp != NULL)

{

chars_read = fread(buffer, sizeof(char), MAX_SIZE, read_fp);

while (chars_read > 0)//读取多数shell命令,shell命令比较长。

{

buffer[chars_read - 1] = 0;

printf("Reading:\n%s\n", buffer);

chars_read = fread(buffer, sizeof(char), MAX_SIZE, read_fp);

}

pclose(read_fp);

//return EXIT_SUCCESS;

}

}

int main()

{

char shell[MAX_SIZE] = {0} ;//= NULL;

//while(1)

//{

scanf("%s",shell);

//gets(shell);

InputShell(shell);

//}

return EXIT_FAILURE;

}

本文同步分享在 博客“shiter”(CSDN)。

如有侵权,请联系 support@oschina.cn 删除。

本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值