gpt4 book ai didi

linux - 使用 rexec 时的随机错误

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:36:34 24 4
gpt4 key购买 nike

我在使用 rexec 时遇到了一个非常奇怪的错误。代码很简单,我只是在循环中调用 rexec:

#include <stdio.h>
#include <errno.h>
#include <netdb.h>
int main() {
char buffData[1024];
int i;
ssize_t j;
char * l_ahost = "cwp01";
struct servent * l_servInfo = getservbyname("exec", "tcp");
for (i = 0; i < 2000; i++) {
int err = rexec(&l_ahost, l_servInfo->s_port, NULL, NULL, "echo -n .", NULL);
if (err <= 0) {
perror("Rexec error");
} else {
if (read(err, buffData, 1024) > 0) printf ("'%c' %d\n", *buffData, i);
close(err);
}
}
return 0;
}

输出是:

muftak : > gcc tst_rexec.c ; ./a.out
'.' 0
'.' 1
'.' 2
'.' 3
'.' 4
...
'.' 47
'.' 48
'.' 49
cwp01.eurocontrol.fr: Connection reset by peer
Rexec error: Illegal seek
'.' 51
'.' 52
'.' 53
'.' 54
...

为什么 rexec 几乎总是正确工作,但并非总是如此?对于这样一个简单的案例,非确定性行为让我很不安。我不知道在哪里搜索对此的解释(当然,stackoverflow 除外)。

我正在使用 Red Hat Enterprise Linux Server 5.8 (Tikanga)

最佳答案

我对 TCP 了解不多,对 rexec 了解更少。你试过命令版本了吗?您的代码建议您可以使用 rexec (1) 而不是 rexec (3)。

祝你好运。

关于linux - 使用 rexec 时的随机错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17151362/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com