• Добро пожаловать на компьютерный форум Tehnari.ru. Здесь разбираемся с проблемами ПК и ноутбуков: Windows, драйверы, «железо», сборка и апгрейд, софт и безопасность. Форум работает много лет, сейчас он переехал на новый движок, но старые темы и аккаунты мы постарались сохранить максимально аккуратно.

    Форум не связан с магазинами и сервисами – мы ничего не продаём и не даём «рекламу под видом совета». Отвечают обычные участники и модераторы, которые следят за порядком и качеством подсказок.

    Если вы у нас впервые, загляните на страницу о форуме и правила – там коротко описано, как задать вопрос так, чтобы быстро получить ответ. Чтобы создавать темы и писать сообщения, сначала зарегистрируйтесь, а затем войдите под своим логином.

    Не знаете, с чего начать? Создайте тему с описанием проблемы – подскажем и при необходимости перенесём её в подходящий раздел.
    Задать вопрос Новые сообщения Как правильно спросить
    Если пришли по старой ссылке со старого Tehnari.ru – вы на нужном месте, просто продолжайте обсуждение.

Create Process

  • Автор темы Автор темы sidjey
  • Дата начала Дата начала

sidjey

Новые
Регистрация
24 Фев 2011
Сообщения
25
Реакции
0
Баллы
0
Ребят, помогите плиз доделать прогу... нужно вставить CreateProcess() в прогу... прога подобие ls в linux с pipe() и fork()....
и еще нужно добавить, чтобы выводило: права доступа... Очень прошу помогите с прогой!!! Заранее спасибо!!!!
Код:
#undef UNICODE
#include <windows.h>
#include <stdio.h>
#include <string.h>

void print_space(int count)
{
    for (int i=0; i<=count; i++) printf(" ");
}

int process_directory(char *theDir, int& level)
{
    WIN32_FIND_DATA ffd;
    LARGE_INTEGER filesize;
    char szDir[MAX_PATH];
    size_t length_of_arg;
    HANDLE hFind = INVALID_HANDLE_VALUE;
    DWORD dwError=0;

    
    strncpy_s(szDir, theDir, MAX_PATH);
    strncat_s(szDir, "\\*", MAX_PATH);
    
    // Find the first file in the directory.
    hFind = FindFirstFile(szDir, &ffd);

    if (INVALID_HANDLE_VALUE == hFind) 
        return dwError;
    
    do
    {
        // пропускаем каталоги . и ..
        if ((strncmp(ffd.cFileName, ".", MAX_PATH) == 0) ||
            (strncmp(ffd.cFileName, "..", MAX_PATH) == 0) )
        {
            if (FindNextFile(hFind, &ffd) != 0) continue;
            else break;
        }
        
        if (ffd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
        {
            print_space(level);
            printf("+--");
            printf("  %s   <DIR>\n", ffd.cFileName);
            level++;
            process_directory(ffd.cFileName, level);
        }
        else
        {
            print_space(level);
            printf("|--");
            filesize.LowPart = ffd.nFileSizeLow;
            filesize.HighPart = ffd.nFileSizeHigh;
            printf("  %s   %ld bytes\n", ffd.cFileName, filesize.QuadPart);
        }
    }
    while (FindNextFile(hFind, &ffd) != 0);
    
    level--;
    dwError = GetLastError();
    FindClose(hFind);
    return dwError;
}


int main(int argc, char *argv[])
{
    if (argc == 1)
    {
        printf("wrong run. use program <path>\n");
        return 1;
    }

    int level = 0;
        process_directory(argv[1], level);

    return 0;
}
 
Назад
Сверху