rexec를 사용할 때 매우 이상한 오류가 발생합니다. 코드는 매우 간단합니다, 그냥 루프에서 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 제외). 내가 레드햇 엔터프라이즈 리눅스 서버를 사용하고
는 해제 5.8 (Tikanga)
명령 줄에서 동일한 결과가 나타납니다. perl -e 'foreach $ i (0..1999) {$ a ='rexec -a cwp01 echo -n .'; "$ a $ i \ n" } ' ... . 1776 cwp01.eurocontrol.fr : 피어 REXEC에 의해 연결 재설정 : REXEC 시스템 호출 오류, REXEC :에서 읽기 오류 : REXEC을 추구 불법 : REXEC (다음 시스템 오류 자체가 오류가있을 수 있습니다) 원격 호스트 : 피어에 의한 연결 재설정 . 1778 ... – BOC