#include <unistd.h>
#include <sys/types.h>
#include <sys/wait.h>
#include <stdlib.h>
#include <fcntl.h> // open
#include <stdio.h>
int main() {
close(1); // close standard out
open("log.txt", O_RDWR | O_CREAT | O_APPEND, S_IRUSR | S_IWUSR);
puts("Captain's log");
chdir("/usr/include");
execl("/bin/ls", "ls", ".", (char *)NULL);
perror("exec failed");
return 0;
}
Когда я проверяю log.txt, я не смог найти «Капитанский журнал». Я предполагал, что он работает до execl, поэтому он должен быть там!почему execl перезаписать файл
Попробуйте 'fflush (STDOUT),' – immibis
@kww вы решить эту проблему? –
@immibis Когда я добавляю 'fflush (stdout);' после 'puts («Капитанский журнал»), он работает. Благодаря! – kww