只是好奇心,
考虑一下我
./ 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
当然我知道不会工作但是有可能写出一些能够满足我想要的东西吗?
答案 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`