Как изменить определенный системный вызов в minix 3.2.1?

Я новичок в minix 3.2.1 и хотел бы изменить определенный системный вызов и его вывод. Например, когда я набираю mkdir Newdirectory, я хочу видеть на экране New dir -> myNewDirectory 755 (755 означает права доступа). Как я мог этого добиться?


person Georgia    schedule 16.04.2016    source источник
comment
Этого не достаточно. Напишите подробнее: что вы пробовали, какие проблемы обнаружили и т. д.   -  person peterh    schedule 19.04.2016


Ответы (1)


прежде всего вам нужно найти правильный файл для изменения. В вашем примере вы можете изменить команду mkdir, изменив/добавив код в файле usr/src/servers/vfs/open.c. Если вы посмотрите файл open.c, вы увидите, что там есть функция do_mkdir. Ты можешь использовать :

printf("New dir -> %s",fullpath);

do_mkdir на самом деле имеет имя нового каталога в массиве полного пути, поэтому вам не нужно создавать переменную самостоятельно. Что касается прав доступа, вы можете использовать S_IRWXU/S_IRWXG/S_IRWXO, чтобы увидеть права доступа (для получения дополнительной информации посетите http://pubs.opengroup.org/onlinepubs/7908799/xsh/sysstat.h.html). Например, вы можете хранить права доступа в целочисленных переменных:

if(bits & S_IRUSR) x = x + 4;
if(bits & S_IWUSR) x = x + 2;
if(bits % S_IXUSR) x = x + 1;

Просто сделайте то же самое для группы и других прав, и все готово.

Имейте в виду, что вам нужно будет скомпилировать файл, чтобы применить изменения. Перейдите в каталог usr/src/realeasetools и используйте команду make hdboot в терминале. Перезапустите, и вы увидите изменения.

person Dimitris Delis    schedule 13.12.2016