Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Помощь студентам


Ответ
 
Опции темы Опции просмотра
Старый 08.04.2011, 21:42   #1 (permalink)
sidjey
Member
 
Регистрация: 24.02.2011
Сообщений: 25
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию Create Process

Ребят, помогите плиз доделать прогу... нужно вставить 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;
}
sidjey вне форума   Ответить с цитированием

Старый 08.04.2011, 21:42
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

Возможно, ваш вопрос уже получил решение на форуме

Unable to create OpenGL screen
Синий экран Windows Logon Process

Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Часовой пояс GMT +4, время: 19:23.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.