![파일에 로그를 쓰도록 변경하면 시작 시 실행 파일이 실행되지 않습니다.](https://linux55.com/image/196399/%ED%8C%8C%EC%9D%BC%EC%97%90%20%EB%A1%9C%EA%B7%B8%EB%A5%BC%20%EC%93%B0%EB%8F%84%EB%A1%9D%20%EB%B3%80%EA%B2%BD%ED%95%98%EB%A9%B4%20%EC%8B%9C%EC%9E%91%20%EC%8B%9C%20%EC%8B%A4%ED%96%89%20%ED%8C%8C%EC%9D%BC%EC%9D%B4%20%EC%8B%A4%ED%96%89%EB%90%98%EC%A7%80%20%EC%95%8A%EC%8A%B5%EB%8B%88%EB%8B%A4..png)
시작 시 콘솔을 통해 로그를 인쇄하는 실행 파일을 실행 printf
하고 서비스가 실행 중일 때 출력에서 실행 중인 바이너리를 볼 수 있지만 ps
더 이상 콘솔에 인쇄되지 않습니다.
그래서 로그를 보기 위해 파일을 생성하도록 애플리케이션을 변경했는데, 변경한 후 이 실행 파일을 실행해야 하는 서비스가 실행되고 있음에도 불구하고 시작 시 실행 파일이 실행되지 않는 것 같습니다.
파일 생성 및 쓰기는 시작 시가 아닌 수동으로 실행할 때 완벽하게 작동합니다.
- 시작 시 실행되는 실행 파일에 대해 콘솔에 대한 printf 로깅을 활성화하려면 어떻게 해야 합니까?
dprintf
파일을 쓰는 데 사용하고 있어요 - 서비스가 실행 중인데도 시작 시 파일을 생성하고 작성해야 하는 실행 파일이 실행되지 않는 이유는 무엇입니까?
샘플 테스트를 수행했습니다. 루프가 있고 실행 파일이 푸시되면 시작 시 실행되지만 루프가 주석 처리되면 실행 파일이 더 이상 실행되지 않습니다.
#define file1 "file1"
#define file2 "file2"
int CreateFiles()
{
dprintf (1, "Creating files");
int fd = open (file1, O_WRONLY | O_CREAT);
if (fd < 0)
{
dprintf (1, "Failed to open the file descriptor");
return -1;
}
fd = open (file2, O_WRONLY | O_CREAT);
if (fd < 0)
{
dprintf (1, "Failed to open the file descriptor");
return -1;
}
return 1;
}
int main(void)
{
while(1);
CreateFiles();
}