[求助]有没有C语言高手啊,关于execv的用法

最近刚接触C,需要做一个minishell类似linux下的bash,不过要简单很多很多用fork()和execv()实现怎么用execv()来运行输入的指令呢。。。比s... 最近刚接触C,需要做一个minishell
类似linux下的bash,不过要简单很多很多
用fork()和execv()实现
怎么用execv()来运行输入的指令呢。。。
比system()要复杂的多啊 @_@

测试不带参数的
execv(str, NULL);
str是输入的路径
貌似没有反应...
man execv看不太懂
带参数的又应该要怎么写?

第一次用百度知道,不知道发的对不对
哪位能指导一下啊。。。大感谢
展开
 我来答
一骑当后
2015-07-04 · 知道合伙人数码行家
一骑当后
知道合伙人数码行家
采纳数:40298 获赞数:306442
网络、设备维护、电路、弱电检测。

向TA提问 私信TA
展开全部

  execv用法介绍:

  execv会停止执行当前的进程,并且以progname应用进程替换被停止执行的进程,进程ID没有改变。

  如果应用程序正常执行完毕,那么execv是永远不会返回的;当execv在调用进程中返回时,说明这个应用程序应该出错了,此时它的返回值应该是-1,具体的错误代码可以通过全局变量errno查看,还可以通过stderr得到具体的错误描述字符串。

  示例如下:

#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>
#include <errno.h>


main(void)
{
  pid_t pid = fork();
   
  if( pid == 0 ) // this is the child process
  {
     execv("/bin/ls", NULL);

     // the program should not reach here, or it means error occurs during execute the ls command.
     printf("command ls is not found, error code: %d(%s)", errno, strerror(errno);
  }
百度网友9489880
2008-05-27 · 超过35用户采纳过TA的回答
知道答主
回答量:144
采纳率:0%
帮助的人:118万
展开全部
#include<process.h>
int execv (char *path.char *argv[]);
加在exec..函数族名后的后缀p、l、v、e表示指定的函数具有功能;其中v表示参数指针(argv【0】..,argv【n】)按指针数组传送。一般来说,当要传送的参数可变时、用后缀v。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式