C将其他c程序作为主要argv传递

时间:2016-10-06 19:41:40

标签: c shell gcc arguments

只是好奇心,

考虑一下我

  

./ first

     

./第二

他们是可执行的c程序

first.c:

char main(void){
    return '5';
}

second.c:

#include<stdio.h>
int main(int argc, char** argv){
    printf("%s", argv[2]);
    return 0;
}

(我想在这里打印5)

是否可以编译second.c,如:

gcc second.c -./first

当然我知道不会工作但是有可能写出一些能够满足我想要的东西吗?

2 个答案:

答案 0 :(得分:2)

main()的返回值成为程序的退出状态,该状态放在shell的$?变量中。所以它应该是:

./first
./second $?

您应该更改first.c以返回int,而不是char;否则它将打印'5'字符的ASCII码,而不是5

int main(void){
    return 5;
}

second.c中,它应该是argc[1],而不是argv[2]

答案 1 :(得分:0)

让第一个程序打印“5”:

int main(void){
    printf("5\n");
    return 0;
}

然后你可以在shell中使用反引号将这个程序的输出放到另一个的参数中:

./second `./first`