LeonardCHoo

Untitled

Jun 1st, 2018
240
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 14.41 KB | None | 0 0
  1. #define _GNU_SOURCE
  2.  
  3. #include <stdio.h>
  4. #include <unistd.h>
  5. #include <string.h>
  6. #include <stdlib.h>
  7. #include <fcntl.h>
  8. #include <sys/syscall.h>
  9. #include <sys/types.h>
  10. #include <sys/stat.h>
  11. #include <signal.h>
  12. #include <sys/mman.h>
  13. #include <sys/time.h>
  14. #include <sys/resource.h>
  15. #include <linux/futex.h>
  16. #include <pthread.h>
  17. #include <sys/wait.h>
  18.  
  19. struct rusage usage;
  20.  
  21. void *func1(void *vargp)
  22. {
  23.                
  24.     syscall(SYS_open, "/etc/ld.so.cache", O_RDONLY|O_CLOEXEC);
  25.     syscall(SYS_close, 3);
  26.     syscall(SYS_open, "/usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0", O_RDONLY|O_CLOEXEC);
  27.     syscall(SYS_read, 3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\0\257\0\0\0\0\0\0", 832);
  28.     syscall(SYS_close, 3);
  29.     syscall(SYS_open, "/lib/x86_64-linux-gnu/librt.so.1", O_RDONLY|O_CLOEXEC);
  30.     syscall(SYS_read, 3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\0!\0\0\0\0\0\0", 832);
  31.     syscall(SYS_close, 3);
  32.     syscall(SYS_open, "/lib/x86_64-linux-gnu/libglib-2.0.so.0", O_RDONLY|O_CLOEXEC);
  33.     syscall(SYS_read, 3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0`\250\1\0\0\0\0\0", 832);
  34.     syscall(SYS_close, 3);
  35.     syscall(SYS_open, "/lib/x86_64-linux-gnu/libpthread.so.0", O_RDONLY|O_CLOEXEC);
  36.     syscall(SYS_read, 3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\260`\0\0\0\0\0\0", 832);
  37.     syscall(SYS_close, 3);
  38.     syscall(SYS_open, "/lib/x86_64-linux-gnu/libdl.so.2", O_RDONLY|O_CLOEXEC);
  39.     syscall(SYS_read, 3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\240\r\0\0\0\0\0\0", 832);
  40.     syscall(SYS_close, 3);
  41.     syscall(SYS_open, "/lib/x86_64-linux-gnu/libm.so.6", O_RDONLY|O_CLOEXEC);
  42.     syscall(SYS_read, 3, "\177ELF\2\1\1\3\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\0V\0\0\0\0\0\0", 832);
  43.     syscall(SYS_close, 3);
  44.     syscall(SYS_open, "/usr/lib/x86_64-linux-gnu/libX11.so.6", O_RDONLY|O_CLOEXEC);
  45.     syscall(SYS_read, 3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0p\210\1\0\0\0\0\0", 832);
  46.     syscall(SYS_close, 3);
  47.     syscall(SYS_open, "/lib/x86_64-linux-gnu/libc.so.6", O_RDONLY|O_CLOEXEC);
  48.     syscall(SYS_read, 3, "\177ELF\2\1\1\3\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0P\t\2\0\0\0\0\0", 832);
  49.     syscall(SYS_close, 3);
  50.     syscall(SYS_open, "/usr/lib/x86_64-linux-gnu/libffi.so.6", O_RDONLY|O_CLOEXEC);
  51.     syscall(SYS_read, 3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\360\27\0\0\0\0\0\0", 832);
  52.     syscall(SYS_close, 3);
  53.     syscall(SYS_open, "/lib/x86_64-linux-gnu/libpcre.so.3", O_RDONLY|O_CLOEXEC);
  54.     syscall(SYS_read, 3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0000\25\0\0\0\0\0\0", 832);
  55.     syscall(SYS_close, 3);
  56.     syscall(SYS_open, "/usr/lib/x86_64-linux-gnu/libxcb.so.1", O_RDONLY|O_CLOEXEC);
  57.     syscall(SYS_read, 3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\260\226\0\0\0\0\0\0", 832);
  58.     syscall(SYS_close, 3);
  59.     syscall(SYS_open, "/usr/lib/x86_64-linux-gnu/libXau.so.6", O_RDONLY|O_CLOEXEC);
  60.     syscall(SYS_read, 3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0P\16\0\0\0\0\0\0", 832);
  61.     syscall(SYS_close, 3);
  62.     syscall(SYS_open, "/usr/lib/x86_64-linux-gnu/libXdmcp.so.6", O_RDONLY|O_CLOEXEC);
  63.     syscall(SYS_read, 3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\320\21\0\0\0\0\0\0", 832);
  64.     syscall(SYS_close, 3);
  65.     syscall(SYS_mprotect, 0xadb000, 20480, PROT_READ);
  66.     // syscall(SYS_getrlimit, RLIMIT_STACK, rlim_cur=8192*1024, rlim_max=RLIM64_INFINITY);
  67.     syscall(SYS_futex, 0xb05c6c, FUTEX_WAKE_PRIVATE, 2147483647);
  68.     syscall(SYS_futex, 0xb05c78, FUTEX_WAKE_PRIVATE, 2147483647);
  69.     syscall(SYS_open, "/etc/ld.so.cache", O_RDONLY|O_CLOEXEC);
  70.     syscall(SYS_close, 3);
  71.     // syscall(SYS_stat, "/lib/x86_64-linux-gnu", st_dev=makedev(8, 1), st_ino=391716, st_mode=S_IFDIR|0755, st_nlink=4, st_uid=0, st_gid=0, st_blksize=4096, st_blocks=40, st_size=20480, st_atime=2018/05/28-13:08:14.528000000, st_mtime=2018/05/18-17:11:24.488882588, st_ctime=2018/05/18-17:11:24.488882588);
  72.     // syscall(SYS_stat, "/usr/lib/x86_64-linux-gnu", st_dev=makedev(8, 1), st_ino=137638, st_mode=S_IFDIR|0755, st_nlink=105, st_uid=0, st_gid=0, st_blksize=4096, st_blocks=144, st_size=73728, st_atime=2018/05/28-13:08:14.532000000, st_mtime=2018/05/24-17:58:59.708320891, st_ctime=2018/05/24-17:58:59.708320891);
  73.     // syscall(SYS_stat, "/lib", st_dev=makedev(8, 1), st_ino=391682, st_mode=S_IFDIR|0755, st_nlink=25, st_uid=0, st_gid=0, st_blksize=4096, st_blocks=8, st_size=4096, st_atime=2018/05/28-13:08:14.692000000, st_mtime=2018/05/18-17:10:08.163376030, st_ctime=2018/05/18-17:10:08.163376030);
  74.     // syscall(SYS_stat, "/usr/lib", st_dev=makedev(8, 1), st_ino=133971, st_mode=S_IFDIR|0755, st_nlink=157, st_uid=0, st_gid=0, st_blksize=4096, st_blocks=24, st_size=12288, st_atime=2018/05/29-13:07:17.559999938, st_mtime=2018/05/24-17:58:58.255584326, st_ctime=2018/05/24-17:58:58.255584326);
  75.     syscall(SYS_open, "/etc/ld.so.cache", O_RDONLY|O_CLOEXEC);
  76.     syscall(SYS_close, 3);
  77.     syscall(SYS_open, "/usr/lib/x86_64-linux-gnu/libcairo.so.2", O_RDONLY|O_CLOEXEC);
  78.     syscall(SYS_read, 3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0@\34\1\0\0\0\0\0", 832);
  79.     syscall(SYS_close, 3);
  80.     syscall(SYS_open, "/usr/lib/x86_64-linux-gnu/libpixman-1.so.0", O_RDONLY|O_CLOEXEC);
  81.     syscall(SYS_read, 3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\340\233\0\0\0\0\0\0", 832);
  82.     syscall(SYS_close, 3);
  83.     syscall(SYS_open, "/usr/lib/x86_64-linux-gnu/libfontconfig.so.1", O_RDONLY|O_CLOEXEC);
  84.     syscall(SYS_read, 3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0`m\0\0\0\0\0\0", 832);
  85.     syscall(SYS_close, 3);
  86.     syscall(SYS_open, "/usr/lib/x86_64-linux-gnu/libfreetype.so.6", O_RDONLY|O_CLOEXEC);
  87.     syscall(SYS_read, 3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0`\334\0\0\0\0\0\0", 832);
  88.     syscall(SYS_close, 3);
  89.     syscall(SYS_open, "/lib/x86_64-linux-gnu/libpng12.so.0", O_RDONLY|O_CLOEXEC);
  90.     syscall(SYS_read, 3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0p:\0\0\0\0\0\0", 832);
  91.     syscall(SYS_close, 3);
  92.     syscall(SYS_open, "/usr/lib/x86_64-linux-gnu/libxcb-shm.so.0", O_RDONLY|O_CLOEXEC);
  93.     syscall(SYS_read, 3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\260\r\0\0\0\0\0\0", 832);
  94.     syscall(SYS_close, 3);
  95.     syscall(SYS_open, "/usr/lib/x86_64-linux-gnu/libxcb-render.so.0", O_RDONLY|O_CLOEXEC);
  96.     syscall(SYS_read, 3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0`4\0\0\0\0\0\0", 832);
  97.     syscall(SYS_close, 3);
  98.     syscall(SYS_open, "/usr/lib/x86_64-linux-gnu/libXrender.so.1", O_RDONLY|O_CLOEXEC);
  99.     syscall(SYS_read, 3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\320\32\0\0\0\0\0\0", 832);
  100.     syscall(SYS_close, 3);
  101.     syscall(SYS_open, "/usr/lib/x86_64-linux-gnu/libXext.so.6", O_RDONLY|O_CLOEXEC);
  102.     syscall(SYS_read, 3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\2205\0\0\0\0\0\0", 832);
  103.     syscall(SYS_close, 3);
  104.     syscall(SYS_open, "/lib/x86_64-linux-gnu/libz.so.1", O_RDONLY|O_CLOEXEC);
  105.     syscall(SYS_read, 3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\260\35\0\0\0\0\0\0", 832);
  106.     syscall(SYS_close, 3);
  107.     syscall(SYS_open, "/lib/x86_64-linux-gnu/libexpat.so.1", O_RDONLY|O_CLOEXEC);
  108.     syscall(SYS_read, 3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\0;\0\0\0\0\0\0", 832);
  109.     syscall(SYS_close, 3);
  110.     syscall(SYS_open, "/etc/ld.so.cache", O_RDONLY|O_CLOEXEC);
  111.     syscall(SYS_close, 3);
  112.     syscall(SYS_open, "/etc/ld.so.cache", O_RDONLY|O_CLOEXEC);
  113.     syscall(SYS_close, 3);
  114.     syscall(SYS_open, "/usr/lib/x86_64-linux-gnu/libpango-1.0.so.0", O_RDONLY|O_CLOEXEC);
  115.     syscall(SYS_read, 3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\360\317\0\0\0\0\0\0", 832);
  116.     syscall(SYS_close, 3);
  117.     syscall(SYS_open, "/usr/lib/x86_64-linux-gnu/libthai.so.0", O_RDONLY|O_CLOEXEC);
  118.     syscall(SYS_read, 3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\220\33\0\0\0\0\0\0", 832);
  119.     syscall(SYS_close, 3);
  120.     syscall(SYS_open, "/usr/lib/x86_64-linux-gnu/libdatrie.so.1", O_RDONLY|O_CLOEXEC);
  121.     syscall(SYS_read, 3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0000\21\0\0\0\0\0\0", 832);
  122.     syscall(SYS_close, 3);
  123.     syscall(SYS_open, "/etc/ld.so.cache", O_RDONLY|O_CLOEXEC);
  124.     syscall(SYS_close, 3);
  125.     syscall(SYS_open, "/etc/ld.so.cache", O_RDONLY|O_CLOEXEC);
  126.     syscall(SYS_close, 3);
  127.     syscall(SYS_open, "/usr/lib/x86_64-linux-gnu/libpangocairo-1.0.so.0", O_RDONLY|O_CLOEXEC);
  128.     syscall(SYS_read, 3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\200I\0\0\0\0\0\0", 832);
  129.     syscall(SYS_close, 3);
  130.     syscall(SYS_open, "/usr/lib/x86_64-linux-gnu/libpangoft2-1.0.so.0", O_RDONLY|O_CLOEXEC);
  131.     syscall(SYS_read, 3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\360q\0\0\0\0\0\0", 832);
  132.     syscall(SYS_close, 3);
  133.     syscall(SYS_open, "/usr/lib/x86_64-linux-gnu/libharfbuzz.so.0", O_RDONLY|O_CLOEXEC);
  134.     syscall(SYS_read, 3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0Pf\0\0\0\0\0\0", 832);
  135.     syscall(SYS_close, 3);
  136.     syscall(SYS_open, "/usr/lib/x86_64-linux-gnu/libgraphite2.so.3", O_RDONLY|O_CLOEXEC);
  137.     syscall(SYS_read, 3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\220$\0\0\0\0\0\0", 832);
  138.     syscall(SYS_close, 3);
  139.     syscall(SYS_open, "/etc/ld.so.cache", O_RDONLY|O_CLOEXEC);
  140.     syscall(SYS_close, 3);
  141.     syscall(SYS_open, "/etc/ld.so.cache", O_RDONLY|O_CLOEXEC);
  142.     syscall(SYS_close, 3);
  143.     syscall(SYS_open, "/usr/lib/x86_64-linux-gnu/libgdk-x11-2.0.so.0", O_RDONLY|O_CLOEXEC);
  144.     syscall(SYS_read, 3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0P\331\1\0\0\0\0\0", 832);
  145.     syscall(SYS_close, 3);
  146.     syscall(SYS_open, "/usr/lib/x86_64-linux-gnu/libgdk_pixbuf-2.0.so.0", O_RDONLY|O_CLOEXEC);
  147.     syscall(SYS_read, 3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\260`\0\0\0\0\0\0", 832);
  148.     syscall(SYS_close, 3);
  149.     syscall(SYS_open, "/usr/lib/x86_64-linux-gnu/libgio-2.0.so.0", O_RDONLY|O_CLOEXEC);
  150.     syscall(SYS_read, 3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\200X\3\0\0\0\0\0", 832);
  151.     syscall(SYS_close, 3);
  152.     syscall(SYS_open, "/usr/lib/x86_64-linux-gnu/libXinerama.so.1", O_RDONLY|O_CLOEXEC);
  153.     syscall(SYS_read, 3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\360\n\0\0\0\0\0\0", 832);
  154.     syscall(SYS_close, 3);
  155.     syscall(SYS_open, "/usr/lib/x86_64-linux-gnu/libXi.so.6", O_RDONLY|O_CLOEXEC);
  156.     syscall(SYS_read, 3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\240!\0\0\0\0\0\0", 832);
  157.     syscall(SYS_close, 3);
  158.     syscall(SYS_open, "/usr/lib/x86_64-linux-gnu/libXrandr.so.2", O_RDONLY|O_CLOEXEC);
  159.     syscall(SYS_read, 3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0p\34\0\0\0\0\0\0", 832);
  160.     syscall(SYS_close, 3);
  161.     syscall(SYS_open, "/usr/lib/x86_64-linux-gnu/libXcursor.so.1", O_RDONLY|O_CLOEXEC);
  162.     syscall(SYS_read, 3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\340#\0\0\0\0\0\0", 832);
  163.     syscall(SYS_close, 3);
  164.     syscall(SYS_open, "/usr/lib/x86_64-linux-gnu/libXcomposite.so.1", O_RDONLY|O_CLOEXEC);
  165.     syscall(SYS_read, 3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0@\f\0\0\0\0\0\0", 832);
  166.     syscall(SYS_close, 3);
  167.     syscall(SYS_open, "/usr/lib/x86_64-linux-gnu/libXdamage.so.1", O_RDONLY|O_CLOEXEC);
  168.     syscall(SYS_read, 3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\220\v\0\0\0\0\0\0", 832);
  169.     syscall(SYS_close, 3);
  170.     syscall(SYS_open, "/usr/lib/x86_64-linux-gnu/libXfixes.so.3", O_RDONLY|O_CLOEXEC);
  171.     syscall(SYS_read, 3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0000\25\0\0\0\0\0\0", 832);
  172.     syscall(SYS_close, 3);
  173.     syscall(SYS_open, "/usr/lib/x86_64-linux-gnu/libgmodule-2.0.so.0", O_RDONLY|O_CLOEXEC);
  174.     syscall(SYS_read, 3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0p\21\0\0\0\0\0\0", 832);
  175.     syscall(SYS_close, 3);
  176.     syscall(SYS_open, "/lib/x86_64-linux-gnu/libselinux.so.1", O_RDONLY|O_CLOEXEC);
  177.     syscall(SYS_read, 3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\260Z\0\0\0\0\0\0", 832);
  178.     syscall(SYS_close, 3);
  179.     syscall(SYS_open, "/lib/x86_64-linux-gnu/libresolv.so.2", O_RDONLY|O_CLOEXEC);
  180.     syscall(SYS_read, 3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0P9\0\0\0\0\0\0", 832);
  181.     syscall(SYS_close, 3);
  182.     syscall(SYS_open, "/proc/filesystems", O_RDONLY)    ;
  183.     syscall(SYS_read, 3, "nodev\tsysfs\nnodev\trootfs\nnodev\tr", 1024);
  184.     syscall(SYS_read, 3, "", 1024);
  185.     syscall(SYS_close, 3);
  186.     syscall(SYS_open, "/etc/ld.so.cache", O_RDONLY|O_CLOEXEC);
  187.     syscall(SYS_close, 3);
  188.     syscall(SYS_open, "/etc/ld.so.cache", O_RDONLY|O_CLOEXEC);
  189.     syscall(SYS_close, 3);
  190.     syscall(SYS_open, "/usr/lib/x86_64-linux-gnu/libgtk-x11-2.0.so.0", O_RDONLY|O_CLOEXEC);
  191.     syscall(SYS_read, 3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\200\237\6\0\0\0\0\0", 832);
  192.     syscall(SYS_close, 3);
  193.     syscall(SYS_open, "/usr/lib/x86_64-linux-gnu/libatk-1.0.so.0", O_RDONLY|O_CLOEXEC);
  194.     syscall(SYS_read, 3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\200\247\0\0\0\0\0\0", 832);
  195.     syscall(SYS_close, 3);
  196.     syscall(SYS_open, "/etc/ld.so.cache", O_RDONLY|O_CLOEXEC);
  197.     syscall(SYS_close, 3);
  198.     syscall(SYS_open, "/dev/urandom", O_RDONLY|O_CLOEXEC);
  199.     syscall(SYS_close, 3);
  200.     // syscall(SYS_sigaltstack, NULL, ss_sp=NULL, ss_flags=SS_DISABLE, ss_size=0);
  201.     syscall(SYS_rt_sigaction, SIGSEGV, NULL, SIG_DFL, NULL, 0, 8);
  202.     syscall(SYS_rt_sigaction, SIGABRT, NULL, SIG_DFL, NULL, 0, 8);
  203.     syscall(SYS_rt_sigaction, SIGFPE, NULL, SIG_DFL, NULL, 0, 8);
  204.     syscall(SYS_rt_sigaction, SIGILL, NULL, SIG_DFL, NULL, 0, 8);
  205.     syscall(SYS_rt_sigaction, SIGBUS, NULL, SIG_DFL, NULL, 0, 8);
  206.     syscall(SYS_rt_sigaction, SIGTRAP, NULL, SIG_DFL, NULL, 0, 8);
  207.     syscall(SYS_getcwd, "/media/sf_sharedvm/termProj/tests", 4096);
  208.  
  209.     return NULL;
  210. }
  211.  
  212. void *func2(void *vargp)
  213. {
  214.  
  215.     long pid;
  216.     int stat_loc;
  217.  
  218.     if ((pid = (long) fork()) == 0){
  219.  
  220.         char s[] = "/opt/sublime_text/sublime_text";
  221.  
  222.         char* separator = " ";
  223.         char* argv[64];
  224.         int argc = 0;
  225.         char* tmp;
  226.  
  227.  
  228.         argv[argc] = strtok_r(s, separator, &tmp);
  229.         while( argv[argc] != NULL){
  230.             argc+=1;
  231.             argv[argc] = strtok_r(NULL, separator, &tmp);
  232.         }
  233.         execvp(argv[0],argv);
  234.     }
  235.     else {
  236.         waitpid(pid, & stat_loc, WUNTRACED);
  237.     }  
  238.  
  239.     return NULL;
  240. }
  241.  
  242. int main()
  243. {
  244.     // struct rusage usage;
  245.  
  246.     pthread_t thread_id[2];
  247.     pthread_create(&thread_id[1], NULL, func2, NULL);
  248.     pthread_create(&thread_id[0], NULL, func1, NULL);
  249.     pthread_join(thread_id[0], NULL);
  250.     pthread_join(thread_id[1], NULL);
  251.  
  252.     getrusage(RUSAGE_SELF, &usage);
  253.     printf("Input: %ld Output: %ld\n", usage.ru_inblock, usage.ru_oublock);
  254.  
  255.     exit(0);
  256. }
Add Comment
Please, Sign In to add comment