【发布时间】:2017-04-03 17:11:46
【问题描述】:
我正在用 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 的总和)
【问题讨论】:
-
这段代码你编译了吗?进入
expr可执行文件。它看起来非常尴尬。你有一个 shell 脚本,调用一个正在调用 shell 脚本的可执行文件,调用可执行文件......它不会和平结束。 -
当我从终端运行 (sh prog.sh 1 2 3) 时,它可以工作。不,我只有一个调用 shell 脚本的 C 程序 :)
-
main到底是什么? -
我的主程序!
-
在C中,
main()的返回类型必须是int,而不是void。