fork download
  1. #include <sys/types.h>
  2. #include <unistd.h>
  3. #include <stdio.h>
  4. #include <sys/wait.h> // Para usar waitpid
  5. int main (int argc, char *argv[]) {
  6. pid_t pid1, pid2;
  7. int status1, status2;
  8. // Primer fork para el primer hijo
  9. if ((pid1 = fork()) < 0) {
  10. perror("Error al crear el primer hijo");
  11. return 1;
  12. }
  13. if (pid1 == 0) {
  14. // Primer hijo
  15. printf("Soy el primer hijo (PID: %d, hijo de PID: %d)\n", getpid(), getppid());
  16. printf("Ejecutando 'ls' con execl...\n");
  17. execl("/bin/ls", "ls", "-l", NULL);
  18. perror("execl falló");
  19. return 1; // Asegurarse de terminar el proceso si execl falla
  20. } else {
  21. // Segundo fork para el segundo hijo
  22. if ((pid2 = fork()) < 0) {
  23. perror("Error al crear el segundo hijo");
  24. return 1;
  25. }
  26. if (pid2 == 0) {
  27. // Segundo hijo
  28. printf("Soy el segundo hijo (PID: %d, hijo de PID: %d)\n", getpid(), getppid());
  29. printf("Ejecutando 'ps' con execv...\n");
  30. char *args[] = {"ps", "-A", NULL};
  31. execv("/bin/ps", args);
  32. perror("execv falló");
  33. return 1;
  34. } else {
  35. // El proceso padre espera a los dos hijos
  36. waitpid(pid1, &status1, 0);
  37. waitpid(pid2, &status2, 0);
  38. printf("Ambos hijos han terminado de ejecutar.\n");
  39. }
  40. }
  41. return 0;
  42. }
  43.  
Success #stdin #stdout 0.01s 5284KB
stdin
Standard input is empty
stdout
    PID TTY          TIME CMD
      1 ?        02:25:18 systemd
      2 ?        00:00:09 kthreadd
      3 ?        00:00:00 rcu_gp
      4 ?        00:00:00 rcu_par_gp
      5 ?        00:00:00 slub_flushwq
      6 ?        00:00:00 netns
      8 ?        00:00:00 kworker/0:0H-events_highpri
     10 ?        00:00:00 mm_percpu_wq
     11 ?        00:00:00 rcu_tasks_kthread
     12 ?        00:00:00 rcu_tasks_rude_kthread
     13 ?        00:00:00 rcu_tasks_trace_kthread
     14 ?        00:04:10 ksoftirqd/0
     15 ?        02:27:58 rcu_preempt
     16 ?        00:00:15 migration/0
     18 ?        00:00:00 cpuhp/0
     19 ?        00:00:00 cpuhp/1
     20 ?        00:00:16 migration/1
     21 ?        00:02:55 ksoftirqd/1
     23 ?        00:00:00 kworker/1:0H-events_highpri
     24 ?        00:00:00 cpuhp/2
     25 ?        00:00:19 migration/2
     26 ?        00:29:06 ksoftirqd/2
     28 ?        00:00:00 kworker/2:0H-events_highpri
     29 ?        00:00:00 cpuhp/3
     30 ?        00:00:15 migration/3
     31 ?        00:02:12 ksoftirqd/3
     33 ?        00:00:00 kworker/3:0H-events_highpri
     34 ?        00:00:00 cpuhp/4
     35 ?        00:00:14 migration/4
     36 ?        00:02:01 ksoftirqd/4
     38 ?        00:00:00 kworker/4:0H-events_highpri
     39 ?        00:00:00 cpuhp/5
     40 ?        00:00:15 migration/5
     41 ?        00:03:26 ksoftirqd/5
     43 ?        00:00:00 kworker/5:0H-events_highpri
     44 ?        00:00:00 cpuhp/6
     45 ?        00:00:14 migration/6
     46 ?        00:02:07 ksoftirqd/6
     48 ?        00:00:00 kworker/6:0H-events_highpri
     49 ?        00:00:00 cpuhp/7
     50 ?        00:00:14 migration/7
     51 ?        00:02:13 ksoftirqd/7
     53 ?        00:00:00 kworker/7:0H-events_highpri
     62 ?        00:00:00 kdevtmpfs
     63 ?        00:00:00 inet_frag_wq
     64 ?        00:00:00 kauditd
     66 ?        00:00:02 khungtaskd
     67 ?        00:00:00 oom_reaper
     68 ?        00:00:00 writeback
     69 ?        00:05:56 kcompactd0
     70 ?        00:00:00 ksmd
     71 ?        00:00:54 khugepaged
     72 ?        00:00:00 kintegrityd
     73 ?        00:00:00 kblockd
     74 ?        00:00:00 blkcg_punt_bio
     75 ?        00:00:00 tpm_dev_wq
     76 ?        00:00:00 edac-poller
     77 ?        00:00:00 devfreq_wq
     78 ?        00:01:02 kworker/0:1H-kblockd
     80 ?        00:02:01 kswapd0
     87 ?        00:00:00 kthrotld
     89 ?        00:00:00 acpi_thermal_pm
     90 ?        00:00:00 mld
     91 ?        00:00:00 ipv6_addrconf
     96 ?        00:00:00 kstrp
    105 ?        00:00:00 zswap-shrink
    106 ?        00:00:00 kworker/u17:0
    159 ?        00:01:25 kworker/4:1H-kblockd
    160 ?        00:00:46 kworker/1:1H-kblockd
    161 ?        00:12:43 kworker/3:1H-kblockd
    162 ?        00:01:09 kworker/5:1H-kblockd
    163 ?        00:06:24 kworker/2:1H-kblockd
    164 ?        00:01:16 kworker/6:1H-kblockd
    167 ?        00:01:07 kworker/7:1H-kblockd
    188 ?        00:00:00 ata_sff
    189 ?        00:00:00 scsi_eh_0
    190 ?        00:00:00 scsi_tmf_0
    191 ?        00:00:00 scsi_eh_1
    192 ?        00:00:00 scsi_tmf_1
    194 ?        00:00:00 scsi_eh_2
    195 ?        00:00:00 scsi_tmf_2
    196 ?        00:00:00 scsi_eh_3
    197 ?        00:00:00 scsi_tmf_3
    198 ?        00:00:00 scsi_eh_4
    199 ?        00:00:00 scsi_tmf_4
    200 ?        00:00:00 scsi_eh_5
    201 ?        00:00:00 scsi_tmf_5
    217 ?        00:00:00 md
    220 ?        01:05:21 md0_raid1
    225 ?        00:00:00 kdmflush/253:0
    226 ?        00:00:00 kdmflush/253:1
    245 ?        00:00:00 raid5wq
    279 ?        00:07:05 jbd2/dm-0-8
    280 ?        00:00:00 ext4-rsv-conver
    336 ?        00:39:09 systemd-journal
    373 ?        00:00:07 systemd-udevd
    461 ?        00:00:00 ipmi-msghandler
    468 ?        00:00:00 watchdogd
    469 ?        00:00:45 mdadm
    488 ?        00:00:00 cryptd
    515 ?        00:00:00 kipmi0
    673 ?        00:00:17 rpcbind
    674 ?        00:00:21 systemd-timesyn
    676 ?        00:00:00 rpciod
    677total 16
-rwxr-xr-x 1 root root 14312 Sep 25 22:11 prog
 ?        00:00:00 xprtiod
    680 ?        00:00:00 acpid
    682 ?        00:00:10 cron
    683 ?        00:00:00 svscanboot
    684 ?        00:40:42 dbus-daemon
    687 ?        00:03:31 irqbalance
    689 ?        00:07:51 rsyslogd
    698 ?        00:00:04 smartd
    702 ?        00:14:51 systemd-logind
    706 ?        00:00:00 atd
    708 ?        00:00:00 agetty
    709 ?        00:00:00 agetty
    751 ?        00:02:48 svscan
    752 ?        00:00:00 readproctitle
    881 ?        00:00:00 supervise
    882 ?        00:00:00 supervise
    883 ?        00:00:00 supervise
    884 ?        00:00:00 supervise
    885 ?        00:00:00 supervise
    886 ?        00:00:00 supervise
    887 ?        00:00:00 supervise
    888 ?        00:00:00 supervise
    889 ?        00:00:00 supervise
    890 ?        00:00:00 supervise
    891 ?        00:00:00 supervise
    893 ?        00:00:00 supervise
    894 ?        00:00:00 supervise
    896 ?        00:00:00 supervise
    897 ?        00:00:00 supervise
    899 ?        00:00:00 supervise
    901 ?        00:00:00 supervise
    902 ?        00:00:00 supervise
    904 ?        00:00:00 supervise
    906 ?        00:00:00 supervise
    909 ?        00:00:00 supervise
    910 ?        00:00:00 supervise
    911 ?        00:00:00 supervise
    912 ?        00:00:00 supervise
    913 ?        00:00:00 supervise
    914 ?        00:00:00 supervise
    915 ?        00:00:00 supervise
    916 ?        00:00:00 supervise
    917 ?        00:00:00 supervise
    918 ?        00:00:00 supervise
    919 ?        00:00:00 supervise
    920 ?        00:00:00 supervise
    991 ?        00:00:00 sudo
    992 ?        00:00:00 run
    993 ?        00:00:00 run
    994 ?        00:00:00 run
    995 ?        00:00:00 sudo
    996 ?        00:00:00 sudo
    997 ?        00:00:00 run
    998 ?        00:00:00 sudo
    999 ?        00:00:00 run
   1000 ?        00:00:00 run
   1001 ?        00:00:00 run
   1002 ?        00:00:00 run
   1003 ?        00:00:00 sudo
   1004 ?        00:00:00 run
   1005 ?        00:00:00 sudo
   1006 ?        00:00:00 run
   1007 ?        00:00:00 run
   1008 ?        00:00:00 sudo
   1009 ?        00:00:00 run
   1010 ?        00:00:00 run
   1011 ?        00:00:00 run
   1012 ?        00:00:00 run
   1106 ?        00:00:00 run
   1107 ?        00:00:00 sudo
   1135 ?        00:07:53 sshd
   1152 ?        00:06:43 multilog
   1153 ?        00:00:00 multilog
   1154 ?        00:05:04 multilog
   1155 ?        00:00:00 multilog
   1156 ?        00:00:00 multilog
   1157 ?        00:00:00 multilog
   1158 ?        00:05:03 multilog
   1159 ?        00:06:12 multilog
   1160 ?        00:06:34 multilog
   1161 ?        00:00:00 multilog
   1162 ?        00:05:04 multilog
   1163 ?        00:00:00 multilog
   1164 ?        00:00:00 multilog
   1165 ?        00:00:00 multilog
   1166 ?        00:06:32 multilog
   1167 ?        00:00:00 multilog
   1175 ?        00:20:32 exim4
   1177 ?        00:13:25 python3
   1178 ?        41-12:10:39 python3
   1179 ?        42-13:24:22 python3
   1180 ?        42-12:05:24 python3
   1181 ?        41-10:37:36 python3
   1182 ?        42-13:45:28 python3
   1183 ?        41-12:12:30 python3
   1184 ?        38-13:24:16 python3
3844906 ?        00:00:00 kworker/6:0-events
3846884 ?        00:00:00 kworker/0:0-cgroup_destroy
3847311 ?        00:00:00 kworker/7:3-events
3848160 ?        00:00:00 kworker/5:3-events
3848384 ?        00:00:00 kworker/1:3-cgroup_pidlist_destroy
3849414 ?        00:00:00 kworker/2:0-cgroup_pidlist_destroy
3850562 ?        00:00:00 kworker/3:3-inet_frag_wq
3850858 ?        00:00:00 kworker/6:3-rcu_gp
3850892 ?        00:00:00 kworker/5:4-rcu_gp
3850980 ?        00:00:00 kworker/2:3-cgroup_pidlist_destroy
3851265 ?        00:00:00 kworker/u16:1-events_unbound
3851407 ?        00:00:00 kworker/1:1-mm_percpu_wq
3851994 ?        00:00:00 kworker/7:2-events
3852188 ?        00:00:00 kworker/4:6-cgroup_destroy
3852190 ?        00:00:00 kworker/4:8-cgroup_pidlist_destroy
3852196 ?        00:00:00 kworker/3:1-cgroup_pidlist_destroy
3852236 ?        00:00:00 kworker/2:2-inet_frag_wq
3852408 ?        00:00:00 kworker/5:0-cgroup_pidlist_destroy
3852477 ?        00:00:00 kworker/3:2-events
3852780 ?        00:00:00 kworker/0:2-inet_frag_wq
3852910 ?        00:00:00 kworker/7:0-cgroup_pidlist_destroy
3853008 ?        00:00:00 kworker/6:1-cgroup_destroy
3853009 ?        00:00:00 kworker/u16:3+netns
3853037 ?        00:00:00 kworker/1:0-cgroup_pidlist_destroy
3853178 ?        00:00:00 kworker/4:0-events
3853342 ?        00:00:00 kworker/2:1-cgroup_destroy
3853368 ?        00:00:00 kworker/4:1-events
3853583 ?        00:00:00 kworker/5:1-mm_percpu_wq
3853619 ?        00:00:00 kworker/0:1-cgroup_pidlist_destroy
3853628 ?        00:00:00 kworker/0:3-events_freezable
3853915 ?        00:00:00 kworker/3:0-events
3853998 ?        00:00:00 kworker/7:1-events
3854039 ?        00:00:00 kworker/u16:0
3854161 ?        00:00:00 bash
3854162 ?        00:00:00 secrun
3854165 ?        00:00:07 prog
3854168 ?        00:00:00 bash
3854169 ?        00:00:00 secrun
3854170 ?        00:00:00 g++-8
3854173 ?        00:00:00 cc1plus
3854174 ?        00:00:00 as
3854189 ?        00:00:00 bash
3854190 ?        00:00:00 secrun
3854191 ?        00:00:00 prog
3854194 ?        00:00:00 kworker/6:2
3854196 ?        00:00:00 ps
Ambos hijos han terminado de ejecutar.