Няшная / Говнокод #7965 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
  19. 19
  20. 20
  21. 21
  22. 22
#include <unistd.h>

	        main()
	        {
        int i=0;
        char *cmd[] = { "ls", "-l", (char *)0 };
        char *env[] = { "HOME=/usr/home", "LOGNAME=home", (char *)0 };
        int rr;
        for(i; i<6; i++)
        {
    switch(rr=fork())
    {
case -1:execl ("/bin/ls", "ls", "-1", (char *)0);break;
case 0:execle ("/bin/ls", "ls", "-l", (char *)0, env);break;
case 1:execlp ("ls", "ls", "-l", (char *)0);break;
case 2:execv ("/bin/ls", cmd);break;
case 3:execve ("/bin/ls", cmd, env);break;
case 4:execvp ("ls", cmd);break;
    }
        }

	        }

- Ну это работают.
И проверяющий поставил плюс.

Запостил: Niceblack Niceblack, (Updated )

Комментарии (13) RSS

      • такие вот выкрутасы - массивы, параллельные форки -- только чтобы содержимое каталога? К тому же могут отработать 2 команды
        Ответить
        • Я, может, чего-то туплю, но я тут вижу только два варианта развития событий:

          1. Дочерний процесс нормально создаётся и вызывает ls -l.
          2. fork по каким-то непонятным причинам умудряется завершиться с ошибкой, и тогда уже родительский процесс вызывает ls -1.

          А в каком случае fork вообще может вернуть 1-4? Где вы видели ОС, дающую пользовательским процессам такие PID?


          PID TTY TIME CMD
          1 ? 00:00:01 init
          2 ? 00:00:00 kthreadd
          3 ? 00:00:12 ksoftirqd/0
          6 ? 00:00:00 migration/0
          Ответить
          • А, там ещё for...

            Ну хорошо, создаст он шесть дочерних процессов ls, только зачем?
            Ответить
          • пардон, это я ступил с температурой - подумал, что fork() будет возвращать не PID, а порядковый номер попытки...
            Ответить
  • очевидно, было тупейшее задание на лабах отработать exec* функции?
    Ответить

Добавить комментарий

Из-за тебя ушел bormand, guest!

    А не использовать ли нам bbcode?


    8