当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 3 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : main(int argc,char*argv[])问题
帖子发表于 : 2009-11-08 11:20 

注册: 2009-11-08 9:07
帖子: 3
送出感谢: 0 次
接收感谢: 0 次
//execlptest.c

#include<errno.h>
#include<error.h>
#include<stdio.h>
#include<unistd.h>
#include<sys/types.h>
#include<stdlib.h>
#include<string.h>
char command[256];
void main()
{
int rtn;
while(1){
printf(">");
fgets(command,256,stdin);
command[strlen(command)-1];
if(fork()==0){
execlp(command,command,NULL);
perror(command);
exit(-1);
}else{
wait(&rtn);
printf("child process return %d\n",rtn);
}
}
}
编译这个函数:gcc -o execlptest execlptest.c
运行:./execlptest
运行结果:
> ls -l /etc
child process return 62580
> exit
child process return 62580


怎么用带参数的main():即main(int argc,char*argv[])改写这个程序,
使得只要从终端输入一次性./execlptest ls -l /etc就可以了,
就是运行的时候printf(">");
fgets(command,256,stdin);
这两行要输入,改写使得只在终端一次性输入

搜了main()的两个参数的意思:
argc是命令行总的参数个数
argv[]是argc个参数


我是怎样想的:
.......
void mian(int argc ,char*argv[])
{
int rtn;
while(1){
execlp(argv[0],argv[1],......,argv[argc-1],NULL);
..............
}
是不是从终端输入的./execlptest ls -l /etc传给了argv[]数组
然后直接execlp(argv[0],argv[1],......,argv[argc-1],NULL);就行了
可是参数的个数argc不确定,那argv[0],argv[1],......,argv[argc-1]这里就写不成了,

因为实在菜,还请大家
帮帮忙~~~~~~~~~~


页首
 用户资料  
 
2 楼 
 文章标题 : Re: main(int argc,char*argv[])问题
帖子发表于 : 2009-11-08 11:42 
头像

注册: 2007-12-01 14:56
帖子: 249
送出感谢: 0 次
接收感谢: 0 次
1.argv[0]是程序名,在你的例子里就是execlptest

2.不要用execlp,用execvp,大致是

execvp( argv[1], argv[2] );

具体请man函数手册

ps:你还用那个while会变成死循环


页首
 用户资料  
 
3 楼 
 文章标题 : Re: main(int argc,char*argv[])问题
帖子发表于 : 2009-11-08 13:13 
头像

注册: 2007-08-05 17:40
帖子: 4968
送出感谢: 0 次
接收感谢: 4
贴代码请用code标签。


_________________
free VPN
YouKuDownLoader
代码:
pip3 install ykdl

install YouKuDownLoader, have fun in downloading.
YouKuDownLoader所支持网站列表


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

当前时区为 UTC + 8 小时


在线用户

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


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

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

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