问题是,如何在相同的“ 大小写”中多次向函数返回值?
fork()
调用将使每个return语句执行一次,包含case
的父函数如何返回?
主意如下:
case 15:
if((bufLen == 15) && ((buf[0] & 0x80) == 128)) {
int rx = buf[5];
int tx = buf[6];
pid_t demux = fork (2);
if (demux == 0) {
(*arity)++;
return append_int(outBuf, outLen, outSz, "RX", rx)
}
if (demux > 0) {
(*arity)++;
return append_int(outBuf, outLen, outSz, "TX", tx);
}
}
break; // case 15
目标函数具有以下参数形式:
append_int(char *buf, int off, int bufsz, char *key, int val);
重要的要求是,由于接收到的帧数较大,因此必须在“ 情况”内完成此操作,因为“存储”数据并“返回”以取回该数据不是一种选择。
到目前为止,从长远来看,一种应用的解决方案会导致资源的大量使用。试图杀死子进程会导致僵尸,从长远来看,它们也会在资源上产生躲避行为。
提前感谢任何想法!
答案 0 :(得分:2)
在C中,每个函数只能返回一次。第一个return语句之后的任何代码将永远不会运行。如果您希望某个功能有多个输出,则有两个选择:
1)通过指针或引用提供输出值,这些指针或引用作为参数传递给函数。
2)具有结构返回类型,并在函数执行过程中填充该结构的值,然后在函数执行路径的末尾返回一次填充的结构。