Где посмотреть передаваемые параметры функции open

Тема в разделе "WASM.BEGINNERS", создана пользователем stellaco, 10 янв 2009.

  1. stellaco

    stellaco New Member

    Публикаций:
    0
    Регистрация:
    11 дек 2008
    Сообщения:
    193
    Обычно я делаю так =)

    Когда то подобрал эти значения) mov ecx, 2002002 означает, что если файл не существует, то создать его ... и дописать данные в файл (идёт только добавление данных... после последнего символа в файле)
    111111111b означает что владелец файла может читать и записывать данные.....а остальные только читать..

    Так вот))...где посмотреть параметры к этому вызову..на все случаи жизни??
     
  2. meduza

    meduza New Member

    Публикаций:
    0
    Регистрация:
    15 авг 2008
    Сообщения:
    212
    stellaco
    смотри сишные инклуды (unistd.h, fcntl.h,..)
    п.с. http://linuxassembly.org/
     
  3. stellaco

    stellaco New Member

    Публикаций:
    0
    Регистрация:
    11 дек 2008
    Сообщения:
    193
    meduza
    Спасибо ).. буду разбираться.
     
  4. stellaco

    stellaco New Member

    Публикаций:
    0
    Регистрация:
    11 дек 2008
    Сообщения:
    193
    посмотрел unistd.h и fcntl.h да и вообще по *.h полазил...
    файлики ссылались на bits/*.h ...
    захожу в bits/fcntl.h
    и вижу следующее
    Как мне такое проставлять? в...
    ;системный вызов open
    mov eax,5
    mov ebx, file_name ; имя файла
    mov ecx, ??????? ; режим открытия файла...
    mov edx, ??????? ; права доступа
    int 0x80

    ? =)....

    К примеру , как должна быть сделана запись, для режима....."создать файл если он не создан, и запись данных с указанного места... или запись в конец.".. (покачто без использования lseek)..
    как выставлять права на чтение , запись и исполнение..для пользователя..групп.. и тд.....

    Пожалуйста..поясните.
     
  5. stellaco

    stellaco New Member

    Публикаций:
    0
    Регистрация:
    11 дек 2008
    Сообщения:
    193
    Вот ещё что нашёл..
    /usr/include/asm-generic/fcntl.h
    и ещё тут инфа http://docs.cs.up.ac.za/programming/asm/derick_tut/syscalls.html
    а вот тут /usr/include/asm/unistd.h номера всех системных вызовов
     
  6. meduza

    meduza New Member

    Публикаций:
    0
    Регистрация:
    15 авг 2008
    Сообщения:
    212
    stellaco
    Смотри секцию 2 man'ов (`man 2 open` итп), сишные хидеры (grep не забывай), исходники linux (в arch/i386/kernel/entry.S например есть таблица вектров syscall'ов, номера можешь оттуда брать) итд. Для общих сведений можешь глянуть `man 2 syscalls`.
    p.s. А вообще, непосредственно вызывать syscall'ы хорошо только для образовательных целей, в реальных программах не геморройся и используй libc. Заодно и переносимость увеличится. (Если ты лезешь в сискаллы для повышения быстродействия, то зря, разницы между сискаллами и libc ты не заметишь).