napodobenina shellu

Sekcia: Programovanie 12.03.2008 | 01:34
skywaker   Návštevník
snazim sa urobyt jeden program v C a potrebujem pomoct
mala by to byt napodobenina shellu

malo by to fungovat takto..

program 1 bezi ... z neho potrebujem spustit dalsi prog 2 ktory sa spusti na pozadi... teda po spusteni ostane sa vykonavat prog1 a zaroven sa vykonava prog2...

zaroven by som chcel mat funkciu killnutia prog2 s prog1 alebo jeho ovladanie ako pozastavenie cinosti atd.


prosim ak viet pomoct tak vopred thanks. najlepsie nejake examples... viem ze sa to roby pomocou sys. volani.. niekde som videl zdrojaky minixu3 ale ja by som to chcel pre linux. thanks.
    • Re: napodobenina shellu 12.03.2008 | 01:47
      Avatar uid0 Debian  Používateľ
      fork(), signal
      Debian. apt-get into it…
      • Re: napodobenina shellu 12.03.2008 | 01:49
        Avatar uid0 Debian  Používateľ
        signal v sekcii 7 a kill() v sekcii 2
        Debian. apt-get into it…
        • Re: napodobenina shellu 12.03.2008 | 01:52
          skywaker   Návštevník
          no pozeram ze niesom sam kto tu este nespi.... pocuj tu je moje ICQ 191 695 225

          prosim nakontaktuj sa na mna,...
          momentalne som vo windows takze nemam pristup k jabberu

          vopred dakujem.,
          • Re: napodobenina shellu 12.03.2008 | 01:57
            Avatar uid0 Debian  Používateľ
            zle pozeras, ja uz uz spim
            Debian. apt-get into it…
            • Re: napodobenina shellu 12.03.2008 | 02:11
              skywaker   Návštevník
              nejake info som nasiel.. nieco v style..
              t10a -- t10.. su spustitelne subory

              pid = getpid();

              if (getpid() == pid)
              if (fork() == 0) {
              execl("t10a", (char *) 0);
              exit(0);
              }
              if (getpid() == pid)
              if (fork() == 0) {
              execl("t10b", (char *) 0);
              exit(0);
              }
              if (getpid() == pid)
              if (fork() == 0) {
              execl("t10c", (char *) 0);
              exit(0);
              }
              if (getpid() == pid)
              if (fork() == 0) {
              execl("t10d", (char *) 0);
              exit(0);
              }


              musim vyskusat teraz som vo win a dnes uz sa mi nechce
              • Re: napodobenina shellu 12.03.2008 | 08:02
                Avatar lime Debian, Red Hat, Fedora Core 3  Používateľ
                uid0 sice spi ale myslienkami je s tebou :)
                Prejdite z modrej obrazovky k linuxu :))
              • Re: napodobenina shellu 17.03.2008 | 23:34
                Avatar Jaroslav Bernát BackTrack 3  Používateľ
                ked nevieš, tak nefušuj
                • GUI 10.12.2008 | 20:24
                  Martingt89   Návštevník
                  Chcel by som tuto temu ozivit a dostat sa k nejakym rieseniam ktore ja nepoznam...

                  Doma som sa snazil spravit gui pre konzolovu apliakciu pricom som pouzil glade, a dve tlacidla, jednym spustim program prikazom:
                  pid_t pid=fork();
                  if (pid == 0){
                  execl("/bin/sh","sh","-c","program", (char*) 0);
                  exit(0);

                  tato cast funguje dobre no, problem vznika pri druhom tlacidlu na zastavenie programu ale nezrusenie GUI, ak pouzijem prikaz kill(getpid(), 3); tak dojde k ukonceniu celeho programu to iste nastane aj po zadani kill(0, 3); pre pid cerskeho programu, prosim poradte ako sa to da riesit, utrzok kodu by pomohol alebo nejaky link (ang. moc neviem)