当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 12 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : [请问]可不可以在C中调用shell命令?
帖子发表于 : 2008-01-03 16:56 

注册: 2007-12-26 11:02
帖子: 166
送出感谢: 0 次
接收感谢: 0 次
如:
在main中能还直接使用pwd???


页首
 用户资料  
 
2 楼 
 文章标题 :
帖子发表于 : 2008-01-03 17:18 
头像

注册: 2006-04-12 20:05
帖子: 8495
地址: 杭州
送出感谢: 0 次
接收感谢: 8
代码:
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$



_________________
关注我的blog: ε==3


页首
 用户资料  
 
3 楼 
 文章标题 :
帖子发表于 : 2008-01-03 18:45 
头像

注册: 2005-08-14 21:55
帖子: 58428
地址: 长沙
送出感谢: 4
接收感谢: 272
system("gimp");
少调用和环境变量有关的命令,那样会无效的。因为gtk等,不太使用这样环境参数了。


_________________
● 鸣学


页首
 用户资料  
 
4 楼 
 文章标题 :
帖子发表于 : 2008-01-03 18:56 
头像

注册: 2007-01-15 17:15
帖子: 3766
送出感谢: 0 次
接收感谢: 0 次
lily@LLY ??????????? 哪个 LL 阿


页首
 用户资料  
 
5 楼 
 文章标题 :
帖子发表于 : 2008-01-03 23:24 

注册: 2006-11-26 14:41
帖子: 122
送出感谢: 0 次
接收感谢: 0 次
完全可以,用execvp等这几个相关的命令,不但可以运行,还可以收到shell返回的值,具体请看 unix环境高级编程


页首
 用户资料  
 
6 楼 
 文章标题 :
帖子发表于 : 2008-01-04 17:33 

注册: 2007-12-26 11:02
帖子: 166
送出感谢: 0 次
接收感谢: 0 次
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$



可能是我表达有误,我不是想得到当然目录,我是想使用这个命令.


页首
 用户资料  
 
7 楼 
 文章标题 :
帖子发表于 : 2008-01-04 17:35 

注册: 2007-12-26 11:02
帖子: 166
送出感谢: 0 次
接收感谢: 0 次
eexpress 写道:
system("gimp");
少调用和环境变量有关的命令,那样会无效的。因为gtk等,不太使用这样环境参数了。


这是调用系统命令来运行本地程序吧,长见识了,谢谢~


页首
 用户资料  
 
8 楼 
 文章标题 :
帖子发表于 : 2008-01-04 17:35 

注册: 2007-12-26 11:02
帖子: 166
送出感谢: 0 次
接收感谢: 0 次
showboy 写道:
完全可以,用execvp等这几个相关的命令,不但可以运行,还可以收到shell返回的值,具体请看 unix环境高级编程


execvp???

unix环境高级编程 看不懂,呵.


页首
 用户资料  
 
9 楼 
 文章标题 :
帖子发表于 : 2008-01-07 13:09 
头像

注册: 2007-10-24 10:21
帖子: 80
地址: 长沙
送出感谢: 0 次
接收感谢: 0 次
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$


手册说调用popen函数的时候要fflush一下,这里是fflush stdin or stdout???


页首
 用户资料  
 
10 楼 
 文章标题 :
帖子发表于 : 2008-01-07 13:23 
头像

注册: 2006-04-12 20:05
帖子: 8495
地址: 杭州
送出感谢: 0 次
接收感谢: 8
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$



可能是我表达有误,我不是想得到当然目录,我是想使用这个命令.


晕,这样就是使用了这个命令啊....


_________________
关注我的blog: ε==3


页首
 用户资料  
 
11 楼 
 文章标题 :
帖子发表于 : 2008-01-07 13:52 
头像

注册: 2005-08-14 21:55
帖子: 58428
地址: 长沙
送出感谢: 4
接收感谢: 272
排骨说高级的。急死人了。呵呵。不知道急了谁。实验了我说的那perl管道调用的没。


_________________
● 鸣学


页首
 用户资料  
 
12 楼 
 文章标题 :
帖子发表于 : 2008-01-07 14:06 
头像

注册: 2006-04-12 20:05
帖子: 8495
地址: 杭州
送出感谢: 0 次
接收感谢: 8
perl 的不会搞呢.


_________________
关注我的blog: ε==3


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 12 篇帖子 ] 

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 1 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译