问题是,如何在同一个“case”内多次向函数返回值?
fork()
call 会导致每个 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);
重要的要求是,它必须在“情况”内完成,因为“存储”数据和“返回”来检索数据由于接收帧的数量而无法选择。
到目前为止,应用的解决方案从长远来看会导致资源的高利用率。试图杀死子进程会导致僵尸进程,从长远来看,这也会产生对资源的狡猾行为。
预先感谢您的任何想法!
最佳答案
在 C 中,每个函数只能返回一次。第一个 return 语句之后的任何代码将永远不会运行。如果您希望一个函数有多个输出,您有两个选择:
1) 通过作为参数传递给函数的指针或引用提供输出值。
2) 具有结构体返回类型,并在函数执行时填充该结构体的值,然后在函数执行路径末尾返回填充的结构体。
关于c - 在 C 中 - 将值多次返回给函数 "at once",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51763730/