| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Программирование под Unix/Linux > Чтение /proc/self/cmdline |
| Автор: Alca 15.3.2011, 12:52 |
| Пытаюсь прочитать файл /proc/self/cmdline, но его размер равен 0, хотя файл не пуст, в нем есть данные. Не понял юмора. Как тогда читать файл, не зная его размера? |
| Автор: Alca 15.3.2011, 13:21 |
| Почему размер нулевой? |
| Автор: bsa 15.3.2011, 15:49 |
| потому что содержимое файла создается в момент чтения. |
| Автор: Alca 15.3.2011, 16:54 |
| а можно как то узнать размер данных? |
| Автор: svlary 16.3.2011, 06:20 | ||
Зачем ? Что бы выполнить системный вызов read(...) ? Надо просто выделить буфер размера, заведомо большего, чем размер командной строки и читать в него :
И в переменной rc будет реальное значение длины командной строки. |
| Автор: Alca 16.3.2011, 10:26 | ||
А что макс. размер коммандной строки это константа? |
| Автор: MAKCim 16.3.2011, 12:51 |
в цикле читай пока read() не возвратит 0 |
| Автор: Alca 16.3.2011, 14:38 |
| Спасибо |
| Автор: svlary 17.3.2011, 05:59 |
МАКСИМАЛЬНЫЙ оразмер, разумеется - константа. И можно даже эту константу найти где-то в исходных кодах bash... |
| Автор: Alca 17.3.2011, 10:24 | ||||||||
Добавлено @ 10:26
Добавлено через 9 минут и 40 секунд
Чего-то мне влом выделять стока памяти |
| Автор: bsa 17.3.2011, 15:48 |
| Зачем усложнять себе жизнь? Читаешь с помощью read() в буфер, при заполнении буфера увеличиваешь его размер в 2 раза (realloc()), дочитываешь... Добавлено через 1 минуту и 30 секунд А потом, в *nix существуют еще файлы устройств. Таких, как например последовательный порт. И как можно определить объем данных, передаваемых через него? Никак. Поэтому и нет функции GetFileSize() |
| Автор: Alca 17.3.2011, 18:05 |
| ясно |