Buildroot에 의해 생성 된 Linux에서 실행되는 임베디드 장치 용 Qt 라이브러리를 사용하여 프로그램을 작성했습니다. 내 프로그램을 시작하기 위해 S80custom
이라는 스크립트를 작성하여 /etc/init.d/
디렉토리에 두었습니다. 스크립트의 내용은 다음과 같습니다 내 프로그램은 시스템 시작시 실행할 때 내 프로그램이 필요한 파일에 액세스 할 수없는 이유는 무엇입니까?
#!/bin/sh
if [ ! -d "/root/files/" ]; then
mkdir /root/files/
fi
if [ ! -d "/root/Test/" ]; then
mkdir /root/Test/
fi
if [ ! -d "/root/Test/Log/" ]; then
mkdir /root/Test/Log/
fi
export TSLIB_CONSOLEDEVICE='none'
export TSLIB_FBDEVICE='/dev/fb0'
export TSLIB_TSDEVICE='/dev/input/event1'
export TSLIB_PLUGINDIR='/usr/lib/ts'
export TSLIB_CONFFILE='/etc/ts.conf'
export TSLIB_CALIBFILE='/etc/pointercal'
export QWS_MOUSE_PROTO=tslib:'/dev/input/event1'
/root/Test/Test -qws
는 그러나
/root/files
에 배치 된 파일에 액세스 할 수 없습니다. 저는
QFile
클래스와 그 멤버 함수를 동일하게 사용했습니다. 내가 표준 C + + 라이브러리를 시도하고 그들은 일하지만, 이상하게 QFile 파일을 열 수 없으며 QFile이 작업에 사용해야합니다.
내가 뭘 잘못하고 있니?
로그인 후에도 명령 프롬프트에서 내 응용 프로그램을 실행할 때 완벽하게 작동한다는 것을 언급해야합니다.
편집이 파일을 열 생각되는 코드의 부분 인 코멘트 요청으로
: 알람을 설정하는 메커니즘이 활성화
QDir directory = QDir::home();
if(!directory.cd("files")){
LOG << directory << "does not exist or path incorrect. trying to make it";
if(directory.mkdir("files"))
{
LOG << "made directory \"files\" at" << directory.absolutePath();
directory.cd("files");
}
else
LOG << "couldn't make diretory... do we have enough priviledges?";
}
fileName = directory.absoluteFilePath("PARMLIST.BIN");
qDebug() << "filename to open:" << fileName;
QFile file(fileName);
QDataStream in(&file);
if(!file.open(QIODevice::ReadOnly))
{
if(CONF_INT("rdu.active") != 1)
AlarmManager::getInstance().setAlarm(102, true);
else
AlarmManager::getInstance().setAlarm(184, true);
paramMissing = true;
return;
}
을, 그 코드의 나에게 말한다 파일이 없거나 손상되었습니다. 그 외에는 오류가 없습니다. 또한 전체 경로를 파일 이름으로 지정하려고했지만 그 중 하나도 작동하지 않았습니다.
을 초기화하기 위해서
를 추가하려고합니다. –
코드 부분을 추가했습니다. 나는 커널이나 다른 어떤 에러도 내지 않는다. 단지 어떤 이유로 든 내 파일에 접근 할 수 없다. ... – Barracuda