리눅스와 윈도우 10의 bash에서 돌아가는 프로그램이 있는데요 이 프로그램을 윈도우용으로 포팅하려고 합니다
별 프로그램은 아니고 stat이랑 open, read, write 몇 번 호출하는 간단한 프로그램 입니다
그런데 mingw 에서 stat, read 같은 함수가 return 을 -1로 합니다 퍼미션 문제인가 싶어 관리자 권한으로 실행해봤는데도 동일하네요
혹시 아시는지요?
file path를 어떻게 주셨나요?
먼저 올렸던 질문은 경로 때문에 생기는 문제였습니다. eclipse에서 디버그 모드로 실행하면 실행파일이 있는 위치가 경로로 잡히지 않고 프로젝트 로드한 디렉토리가 경로로 잡히네요
그리고 이번에는 317KB 정도 하는 바이너리를 open 후 read하면 474B 만 읽히고 0를 리턴하는 문제가 있습니다.
1B씩 반복해서 읽거나 루프를 돌려놔도 무조건 474B 만 읽고 0를 리턴하네요 474B는 내용을 비교해보면 잘 읽는 것 같습니다. 왜 이럴까요? (코드는 별거 없습니다)
int rb; int fd = open(fname, O_RDONLY); if(fd <= 0) { return -1; } for(len=0, rb=1; len<file_length && rb>0; len++) { rb = read(fd, buf + len, 1); }
코드가 일부분 뿐이라서 확실하진 않지만
file_length 값이 474 일것 같아 보이네요. file_length 값을 먼저 확인해보세요.
제가 코드를 이상하게 짜서 분란이 발생하고 있군요 죄송합니다
errno는 발생되지 않습니다(항상 0이상의 정수만 리턴) 딜레이를 넣어도 마찬가지네요 웃긴게 stat의 filesize는 정확하게 읽습니다.
mingw가 이상하다고 판단하여 플랫폼을 옮겼습니다 저 루프코드는 신경쓰지 마세요 제가 봐도 별로 안 좋게 짜여진 거 같습니다
텍스트 포맷에 대한 자세한 정보
<code>
<blockcode>
<apache>
<applescript>
<autoconf>
<awk>
<bash>
<c>
<cpp>
<css>
<diff>
<drupal5>
<drupal6>
<gdb>
<html>
<html5>
<java>
<javascript>
<ldif>
<lua>
<make>
<mysql>
<perl>
<perl6>
<php>
<pgsql>
<proftpd>
<python>
<reg>
<spec>
<ruby>
<foo>
[foo]
file path를 어떻게 주셨나요?
file path를 어떻게 주셨나요?
먼저 올렸던 질문은 경로 때문에 생기는 문제였습니다.
먼저 올렸던 질문은 경로 때문에 생기는 문제였습니다.
eclipse에서 디버그 모드로 실행하면 실행파일이 있는 위치가 경로로 잡히지 않고 프로젝트 로드한 디렉토리가 경로로 잡히네요
그리고 이번에는 317KB 정도 하는 바이너리를 open 후 read하면 474B 만 읽히고 0를 리턴하는 문제가 있습니다.
1B씩 반복해서 읽거나 루프를 돌려놔도 무조건 474B 만 읽고 0를 리턴하네요
474B는 내용을 비교해보면 잘 읽는 것 같습니다. 왜 이럴까요?
(코드는 별거 없습니다)
-> 실행하면 len은 474 가 나옴
코드가 일부분 뿐이라서 확실하진 않지만
코드가 일부분 뿐이라서 확실하진 않지만
file_length 값이 474 일것 같아 보이네요.
file_length 값을 먼저 확인해보세요.
제가 코드를 이상하게 짜서 분란이 발생하고 있군요
제가 코드를 이상하게 짜서 분란이 발생하고 있군요
죄송합니다
errno는 발생되지 않습니다(항상 0이상의 정수만 리턴)
딜레이를 넣어도 마찬가지네요 웃긴게 stat의 filesize는 정확하게 읽습니다.
mingw가 이상하다고 판단하여 플랫폼을 옮겼습니다
저 루프코드는 신경쓰지 마세요 제가 봐도 별로 안 좋게 짜여진 거 같습니다
댓글 달기