Я уже отправил следующий Вопрос, получил решение и продвигаюсь вперед
Я использую ptrace, чтобы узнать, какие аргументы передаются системному вызову.
Программа получает значения в ebx, ecx, edx. Теперь для открытого системного вызова я получил следующее
СИСТЕМНЫЙ ВЫЗОВ 5: ebx :bf9748af ecx: 00008000 edx: 00000000 /open
СИСТЕМНЫЙ ВЫЗОВ 5: ebx :80485b3 ecx: 00000242 edx: 000001b6 /open
Я использовал strace, и он волшебным образом преобразует приведенное выше:
open("test.txt", O_RDONLY|O_LARGEFILE) = 3
open("test.txt", O_RDWR|O_CREAT|O_TRUNC, 0666) = 3
Как я могу сделать это вручную? Есть ли место, где я могу узнать значения для O_LARGEFILE?
Я долго искал и наткнулся на это. в нем нет всего. Также пробовал читать код strace, но не нашел код для этого преобразования.
Если кто-то может мне помочь, это было бы очень полезно для меня. Кроме того, если вы знаете, где это написано в strace, я хочу взглянуть на это. Заранее спасибо.
man 2 open
и узнал, что open выполняет побитовое ИЛИ, но полной картины так и не получил :( - person kidd0   schedule 20.03.2012242
вO_RDWR | O_CREAT | O_TRUNC
- person kidd0   schedule 20.03.2012O_RDWR
и т. Д., Но когда они передаются в регистрах, значения представляют собой длинные целые числа. (значения в ebx, ecx) и т. д., я хочу интерпретировать целые значения для этих флагов, которые там не упоминаются. - person kidd0   schedule 20.03.2012