$如何?使用c退出代码?

问题描述 投票:-1回答:1

我有一个用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吗?

c bash
1个回答
0
投票

如评论所注,当前脚本的主要问题是它显示的是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,如果一切正常,则保存为零,否则为非零(包括编译错误,构建错误等)

© www.soinside.com 2019 - 2024. All rights reserved.