[请问]可不可以在C中调用shell命令?
发表于 : 2008-01-03 16:56
如:
在main中能还直接使用pwd???
在main中能还直接使用pwd???
代码: 全选
lily@LLY:~/test$ cat fopen.c
#include<stdio.h>
int main(){
FILE * fp;
char str[1024];
if(NULL==(fp=popen("pwd","r"))){
return -1;
}else{
printf("%s",fgets(str,1023,fp));
}
return 0;
}
lily@LLY:~/test$ gcc fopen.c
lily@LLY:~/test$ ./a.out
/home/lily/test
lily@LLY:~/test$
可能是我表达有误,我不是想得到当然目录,我是想使用这个命令.bones7456 写了:代码: 全选
lily@LLY:~/test$ cat fopen.c #include<stdio.h> int main(){ FILE * fp; char str[1024]; if(NULL==(fp=popen("pwd","r"))){ return -1; }else{ printf("%s",fgets(str,1023,fp)); } return 0; } lily@LLY:~/test$ gcc fopen.c lily@LLY:~/test$ ./a.out /home/lily/test lily@LLY:~/test$
这是调用系统命令来运行本地程序吧,长见识了,谢谢~eexpress 写了:system("gimp");
少调用和环境变量有关的命令,那样会无效的。因为gtk等,不太使用这样环境参数了。
execvp???showboy 写了:完全可以,用execvp等这几个相关的命令,不但可以运行,还可以收到shell返回的值,具体请看 unix环境高级编程
手册说调用popen函数的时候要fflush一下,这里是fflush stdin or stdout???bones7456 写了:代码: 全选
lily@LLY:~/test$ cat fopen.c #include<stdio.h> int main(){ FILE * fp; char str[1024]; if(NULL==(fp=popen("pwd","r"))){ return -1; }else{ printf("%s",fgets(str,1023,fp)); } return 0; } lily@LLY:~/test$ gcc fopen.c lily@LLY:~/test$ ./a.out /home/lily/test lily@LLY:~/test$
晕,这样就是使用了这个命令啊....xxmv99 写了:可能是我表达有误,我不是想得到当然目录,我是想使用这个命令.bones7456 写了:代码: 全选
lily@LLY:~/test$ cat fopen.c #include<stdio.h> int main(){ FILE * fp; char str[1024]; if(NULL==(fp=popen("pwd","r"))){ return -1; }else{ printf("%s",fgets(str,1023,fp)); } return 0; } lily@LLY:~/test$ gcc fopen.c lily@LLY:~/test$ ./a.out /home/lily/test lily@LLY:~/test$