rose@baby.swmed.utexas.edu (Rose Oguz) (06/01/90)
A few people asked me to post the solution to my interfacing C code to a
shell script question. The consenus seems to be to use popen(). The
syntax follows:
FILE *popen(command, type)
char *command, *type;
command is a shell command line
type is I/O mode: r or w
So, I used
char f_names[20];
char *ret_stat;
long stat;
FILE *fp
...
if ((fp = popen("ls *c", "r") != NULL)
{
while ((stat=fscanf(fp, "%s", f_names)) != EOF)
{
...
}
}
pclose(fp);
I also changed the fscanf line to
while ((ret_stat=fgets(f_names, 2, fp)) != NULL)
Neither seems to work. A file pointer is returned, but the while loop
is never executed. For the fscanf, -1 (EOF) is returned and for the
fgets, NULL (also, EOF since I opened the file with popen) is
returned. I'm running this in my source directory; so, I know that
files exist. What am I doing wrong? Any ideas?subbarao@phoenix.Princeton.EDU (Kartik Subbarao) (06/01/90)
In article <23498@adm.BRL.MIL> rose@baby.swmed.utexas.edu (Rose Oguz) writes: > >So, I used > char f_names[20]; /* Make this 21 */ > char *ret_stat; > long stat; > FILE *fp; > ... > if ((fp = popen("ls *c", "r") != NULL) /* Need an extra ')' here ---^ */ { /* Ugly fscanf code deleted */ > while ((ret_stat=fgets(f_names, 2, fp)) != NULL) > /* ^^^ 2?! Don't you mean 20? */ } > pclose(fp); > > >Neither seems to work. A file pointer is returned, but the while loop >is never executed. For the fscanf, -1 (EOF) is returned and for the >fgets, NULL (also, EOF since I opened the file with popen) is >returned. I'm running this in my source directory; so, I know that >files exist. What am I doing wrong? Any ideas? I have no idea how this passed the compiling stage of your computer. The way it looks now, its as if you are saying fp = (popen("ls *c", "r") != NULL), because != has higher precedence than =. And so our compiler will gripe because you are trying to assign the value of int to a FILE *. As to fgets, it should now work -- I hope you meant 20 instead of 2! -Just another popen() hacker, Kartik -- subbarao@{phoenix,bogey or gauguin}.Princeton.EDU -|Internet kartik@silvertone.Princeton.EDU (NeXT mail) -| subbarao@pucc.Princeton.EDU - Bitnet