gpt4 book ai didi

c - 用execv执行shell程序

转载 作者:太空宇宙 更新时间:2023-11-04 08:05:23 24 4
gpt4 key购买 nike

我正在用 C 语言编写一个包含这些行的程序:

void main(int argc, char *argv[]) {
char* file=argv[1];
char* arguments[] = { "sh", argv[2], argv[3], argv[4], file, NULL };
execv("/bin/sh", arguments);
}

该文件是 prog.sh,其中包含一个简单的参数总和:

expr $1 + $2 + $3

当我通过 ./main prog.sh 1 2 3 运行程序时,我得到一个错误

/bin/sh: 0: Can't open 1

虽然我期望输出 6(1 2 3 的总和)

最佳答案

看看你的论点:

char* arguments[] = { "sh", argv[2],argv[3],argv[4],file, NULL };

当你运行 ./main prog.sh 1 2 3 时,你最终会调用:

sh 1 2 3 prog.sh

您应该改为将脚本作为第一个参数:

char* arguments[] = { "sh", file, argv[2],argv[3],argv[4], NULL };

因此调用

sh prog.sh 1 2 3

关于c - 用execv执行shell程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43190529/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com