Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Программирование под Unix/Linux > kvm и сокеты


Автор: JavaCraft 21.3.2007, 00:32
Доброго времени суток!
Вот такой вопрос: как из kvm(Kernel virtual memory) получить количество сокетов( + протокол,адреса итд),открытых отдельным процессом?!

/*-------------------*/
 smile 

Автор: MAKCim 21.3.2007, 10:26
Код

void get_socket_info(int pid) {
    struct task_struct *task;
    struct files_struct *files;
    struct socket *sock;
    struct inode *inode;
    int index;
    task = find_task_by_pid(pid); /* find task by pid */
    files = task -> files; /* get `struct files_struct' object */
    for (index = 0; index < NR_OPEN_DEFAULT; ++index) { /* see all open files */
        if (files -> fd_array[index] == NULL)
            continue;
        inode = files -> fd_array[index] -> f_dentry -> d_inode;
        if (S_ISSOCK(inode -> i_mode)) {
            sock = SOCKET_I(inode); /* get socket object by inode object */
            ...
        }
    }
}

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)