Под моим виртуальным изображением Ubuntu я играл с открытыми и записывал системные вызовы на C и получал самую смешную ошибку, которую я когда-либо имел!Забавная запись Ошибка SysCall: печатает китайские символы в .txt
В принципе, я получаю дескриптор файла из open и записываю вход, который поступает из записи в файл .txt. Пользователь сообщает открытой функции, где искать файл /, где можно создать файл.
- Если файл не был создан, открыт будет создавать его для меня
Если там уже, я буду добавлять ввод в конец файла
int main(int argc, char* argv[]{ int fd; int bytesWritten; //open and create file if it's not been created yet fd = open(argv[1], O_CREAT|O_WRONLY|O_APPEND , S_IRWXU); if(fd == -1){ perror("Open error:\n"); exit(EXIT_FAILURE); } bytesWritten = write(fd,"Hello mate!\n",20); if(bytesWritten == -1){ perror("Write error:\n"); exit(EXIT_FAILURE); } //fysnc return 0;}
Если я печатать на стандартный вывод (1) (изменение FD 1), я получить ожидаемый результат:
Hello mate!
НО, если я использую записи, как показано выше вещей получить действительно странно (и смешно)
Это заставило меня смеяться, то файл будет создан, и если я исполню программка пару раз файл начнет расти и расти.
BTW, я выполнить программу так:
./copy /home/b/Desktop/Examples/U3/test.txt
Я должен признать, что это довольно забавно побочный эффект, но почему это происходит и как я могу решить эту проблему?
Просто любопытный
Может Gedit угадывает кодировку файла неправильно. Я бы предположил, что вы используете какой-либо шестнадцатеричный редактор, чтобы проверить, какой контент у вас есть на самом деле, чтобы убедиться, что все в порядке. – user694733
Или попробуйте выход команды cat в tue Terminal – mame98
@ mame98 thx, я сам забыл об этом. Он печатает сообщение об ошибке, которое я не могу напечатать из-за китайских символов. Я думаю, –