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