有时候可能需要C程序和shell脚本之间互相传递数据,下面实现了两者之间数据的传递操作。
用popen实现了shell的输出参数想C程序的传递。
int getcount()
{
FILE *fp;
int total=0;
char buff[MAXLINE]={0};
char command[]={"./count"}; //count为已写脚本
fp=popen(command,"r"); //调用进程读取command的输出
while( fgets( buff, MAXLINE, fp )!= NULL) //将管道数据读入缓冲区buff中
fputs(buff,stdout);
total=atoi(buff);
pclose(fp);
return total;
}
那么,c程序向shell脚本传参数怎么传递呢,请看下面的实例:
int main()
{
char *name[]={ "1.txt","2.txt" };
if( execl("./script", "./script " ,name[1], (char *)0 ) == -1 )
{
perror("execl");
exit(EXIT_FAILURE);
}
return 0;
}
其中name[1]为字符指针,因为我的script脚本需要接收一个文件名作为参数,可以通过execl直接把文件名这个字符串直接传递给脚本使用。真是不错