Advertisement
Guest User

Untitled

a guest
Sep 27th, 2016
55
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.98 KB | None | 0 0
  1. #include<stdio.h>
  2. #include<string.h>
  3. #include<unistd.h>
  4. #include<sys/wait.h>
  5.  
  6. void split_word(char *string, char **word)
  7. {
  8. int i;
  9. word[0] = strtok(string, " \n");
  10. for(i=0; word[i]; i++)
  11. {
  12. word[i+1] = strtok(NULL, " \n");
  13. }
  14. }
  15.  
  16. int main()
  17. {
  18. char cmd[80];
  19. char *args[20];
  20.  
  21. while (1)
  22. {
  23. // cetak prompt "$ "
  24. printf("$ ");
  25. // baca string perintah
  26. gets(cmd);
  27. // jika perintah == "exit", keluar
  28. if(strcmp(cmd,"exit") == 0 ) return 0;
  29. // potong string perintah per argumen
  30. split_word(cmd, args);
  31. // buat proses child untuk:
  32. pid_t pid;
  33. pid = fork();
  34. wait(NULL);
  35. if(pid == 0)
  36. {
  37. int status;
  38. // exec string perintah
  39. status = execvp(args[0], args);
  40.  
  41. // cetak pesan error jika exec gagal
  42.  
  43. if(status == -1)
  44. {
  45.  
  46. puts("Error");
  47. // keluar dengan kode status -1
  48. kill(pid, SIGQUIT);
  49. }
  50. }
  51. // sinkronisasi proses child
  52. }
  53.  
  54. return 0;
  55. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement