起動時にコンソールを介してログを印刷する実行可能ファイルを実行し、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();
}