在C或C++中如果我有一个具有以下结构的程序:
..includes..
..defines..
void function_one(int i) {
...
}
void function_two(const char * str) {
...
}
int main(int argc, char *argv[]) {
...
}
Run Code Online (Sandbox Code Playgroud)
保存为main.c/cpp.
如何编写一个新文件test.c/cpp,我可以在其中调用函数main.c/cpp?
我现在怎么样:
编译器标志:-etest_main
要编译的文件:main.c test.c
运行测试输出:Blank no errors
我的测试主打印"在这里",但我不知道为什么测试可执行文件不是.
信号SIGTERM和SIGINT的信号处理程序在接收到任何一个信号时会导致轮询错误.我不确定为什么会这样做,我想我不知道我错过了一些sigaction的行为.
while(!signalHandler.gotExitSignal()) {
switch (poll(&ufds[0], NUM_FDS, POLL_TIMEOUT)) {
case -1: {
throw std::runtime_error("poll error (-1)"); /* ABORT */
}
.
.
Run Code Online (Sandbox Code Playgroud)
我的signalHandler是一个包含sigaction处理的类.
struct sigaction killAction, termAction;
memset(&killAction, 0, sizeof(struct sigaction));
killAction.sa_handler = SignalHandler::ExitHandler;
sigemptyset(&killAction.sa_mask);
killAction.sa_flags = 0;
if(sigaction(SIGTERM, &killAction, NULL) < 0)
throw SignalException("sigaction failed for killAction");
memset(&termAction, 0, sizeof(struct sigaction));
termAction.sa_handler = SignalHandler::ExitHandler;
sigemptyset(&termAction.sa_mask);
termAction.sa_flags = 0;
if(sigaction(SIGTERM, &termAction, NULL) < 0)
throw SignalException("sigaction failed for termAction");
Run Code Online (Sandbox Code Playgroud)
所以我给出的片段循环的预期行为应该是: