1. Си / Говнокод #5057

    +134

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    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
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    48. 48
    49. 49
    50. 50
    51. 51
    52. 52
    53. 53
    54. 54
    55. 55
    56. 56
    57. 57
    58. 58
    59. 59
    60. 60
    61. 61
    62. 62
    63. 63
    64. 64
    65. 65
    66. 66
    67. 67
    68. 68
    69. 69
    70. 70
    71. 71
    #include <stdio.h>
    #include <unistd.h>
    #include <stdlib.h>
    #include <time.h>
    #include <sys/types.h>
    
    int main(int argc, char ** argv)
    {
    //...
    time_t time0=time(NULL);
    //...
    if ((f=fopen(argv[1],"r"))==NULL)
    {
    	//...
    }
    while ((fscanf(f,"%i %s",&tim[i],buffer[i]))!=EOF)
    {
    	i++;
    	if (i>=n)
    	{
    		n=i+10;
    		tim=(int*)realloc(tim,n*sizeof(int));
    		buffer=(char**)realloc(buffer,n*sizeof(char*));
    		for (k=k; k<n; k++)
    		{
    			buffer[k]=(char*)realloc(buffer[k],256*sizeof(char));
    		}
    	}
    }
    if (fclose(f)==-1)
    {
    	//...
    }
    //------------finished reading input file-------------------
    //------------sorting (bubble =) )--------------------------
    while (flag)
    	{
    		flag=0;
    		for (j=0; j<=i-2; j++)
    		{
    			if (tim[j]>tim[j+1])
    			{
    				tmpi=tim[j];
    				tim[j]=tim[j+1];
    				tim[j+1]=tmpi;
    				tmpc=buffer[j];
    				buffer[j]=buffer[j+1];
    				buffer[j+1]=tmpc;
    				flag=1;
    			}
    		}
    	}
    //-----------executing------------------------------
    k=0;
    while(k<=i-1)
    {
    	if (tim[k]==(int)(time(NULL)-time0))
    	{
            if(!(pid=fork()))
            {
            	execv(buffer[k],NULL);
            }
            else
            {
            	k++;
            }
    	}
    }
    //...
    return 0;
    }

    Читает из файла таймер до запуска и имя программы. Я плакалъ...

    Запостил: krems, 25 Декабря 2010

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

    • while ((fscanf(f,"%i %s",&tim,buffer))!=EOF)
      {
      if(!(pid=fork()))
      {
      if(tim<0)
      {
      fprintf(stderr,"Time shouldn't be negative\n");
      exit(-1);
      }
      sleep(tim);
      if(execv(buffer,NULL)==-1)
      {
      exit(-1);
      }
      }
      }
      Ответить
    • > //------------sorting (bubble =) )--------------------------

      следы того что кто-то не знает про структуры. какой админ писал наверное. хотя все равно странно что на С - на каком скриптовом языке это было проще. если конeчно мы не имеем здесь дела с setuid.
      Ответить
    • Сортировка... я рыдаю
      Ответить

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