C에서 파일을 다른 디렉토리로 복사하는 데 문제가 있습니다. 특히 코드가 텍스트 파일에서는 잘 작동하지만 실행 파일에서는 제대로 작동하지 않습니다. 기록 된 바이트 수는 정확하고 파일 권한도 같지만 파일 시스템에서 사본의 결과 유형을 실행 가능으로 인식하지 못합니다 (저는 xubuntu 가상 시스템에서 작업 중입니다). "알 수 없음"유형이 있습니다. 따라서 bash에서 md5sum의 결과를 명령 행에서 반향하는 경우에는 다릅니다.C에서 실행 파일 복사
다음 코드에서 "checkErrno"는 perror를 호출하는 me 정의 함수입니다. "currDir"은 현재 디렉토리이고 "DIRNAME"은 이동하려는 디렉토리입니다. 모든 라이브러리가 올바르게 포함되어 있습니다. 중요한 코드 묶음을 복사하여 붙여 넣었습니다.
struct stat fileSt;
if(stat(fileName,&fileSt) != 0) checkErrno("Stats file");
char currDir[PATH_MAX];
FILE* file;
if(getcwd(currDir,PATH_MAX) == NULL) checkErrno("Currdir");
if(chdir(DIRNAME) != 0) checkErrno("Chdir");
if((file = fopen(fileName,"w")) == NULL) checkErrno("Create file");
if(chmod(fileName, fileSt.st_mode & 07777)) perror("chmod");
if(fwrite(fileMsg.data.buf,1,fileSize,file) < fileSize) checkErrno("fwrite");
fflush(file);
if(fclose(file) != 0) checkErrno("fclose");
if(chdir(currDir) != 0) checkErrno("chdir");
미리 감사드립니다.
짧은 _complete_ 프로그램을 제공하십시오. 여기에 표시된 코드에는 파일을 읽는 방법과 같은 많은 내용이 누락되었습니다. –
많은 코드가 필요합니다. missing ... 아마도 버퍼가 잘못 읽혀진 것입니까? 읽은 코드를 알려주십시오. – Grantly
무엇이 "중요한"코드인지 어떻게 알 수 있습니까? 문제는? –