我有一个用C编写的程序,它以代码1退出:
#include <stdlib.h>
...
datatype pop(stack* st){
if (empty(st)) exit(1);
return st->data[st->sp--];
}
...
int main(void){
...
// a is empty at this time
pop(a);
...
return 0;
}
而且我有一个bash脚本:
run() {
gcc -Wall -W -Wshadow -g -c "$filename.c"
echo "Exit code $?"
gcc -Wall -W -Wshadow -g "$filename.o" -o "$filename" -lm
./"$filename"
}
[当我运行程序时,我得到Exit code 0
,我不应该得到Exit code 1
吗?
如评论所注,当前脚本的主要问题是它显示的是GCC状态,而不是运行状态。另请注意,放置“ echo”将更改$?。假设您需要一个“ combo”函数来构建,执行和返回状态
run () {
gcc -Wall -W -Wshadow -g -c "$filename.c" || return $?
gcc -Wall -W -Wshadow -g "$filename.o" -o "$filename" -lm || return $?
./"$filename"
}
run
Status saved in $X
X=$?
echo "Status=$?
'combo'的状态保存为X,如果一切正常,则保存为零,否则为非零(包括编译错误,构建错误等)