linux 下c語言調用終端命令


#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#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 <unistd.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>

#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;
}




注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2020 ITdaan.com