Advertisement
Guest User

Untitled

a guest
Dec 11th, 2019
91
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.78 KB | None | 0 0
  1. #include<stdio.h>
  2. #include<string.h>
  3. #include <unistd.h>
  4. #include<sys/wait.h>
  5. #include<sys/types.h>
  6.  
  7. int main(int argc, char*argv[]){
  8. if(argc!=2){
  9. if(argc==1){
  10. fprintf(stderr,"Wymagany tylko jeden argument! \n");
  11. return 1;
  12. }
  13. else{
  14. fprintf(stderr,"Tylko jeden argument dozwolony! \n");
  15. }
  16. return 1;
  17. }
  18. else if (strlen(argv[1])>20){
  19. fprintf(stderr,"Argument musi mieć <20 znaków! \n");
  20. return 1;
  21. }
  22. int len=strlen(argv[1]);
  23. if(len==1){
  24. char c=argv[1][0];
  25. printf("Wartość ASCII argumentu %c to: %d \n",c,c);
  26. return c;
  27. }
  28. else
  29. {
  30. char part11[10];
  31. char part22[10];
  32. if(len%2==0){
  33. int nlen=len/2;
  34. char part1[nlen];
  35. part1[nlen]='\0';
  36. char part2[nlen];
  37. part2[nlen]='\0';
  38. for(int i=0;i<nlen;i++){
  39. part1[i]=argv[1][i];
  40. part2[i]=argv[1][i+nlen];
  41. memcpy(part11,part1,sizeof(part11));
  42. memcpy(part22,part2,sizeof(part22));
  43. }
  44.  
  45. }
  46. else{
  47. int slen=len/2;
  48. int llen=slen+1;
  49. char part1[slen];
  50. part1[slen]='\0';
  51. char part2[llen];
  52. part2[llen]='\0';
  53. for(int i=0;i<slen;i++){
  54. part1[i]=argv[1][i];
  55. }
  56. for(int i=0;i<llen;i++){
  57. for(int j=slen;j<llen;j++){
  58. part2[i]=argv[1][j+i];
  59. }
  60. }
  61. memcpy(part11,part1,sizeof(part11));
  62. memcpy(part22,part2,sizeof(part22));
  63.  
  64. }
  65. int exit1,exit2;
  66. int child1=fork();
  67. if(child1>0){
  68. int child2=fork();
  69. if(child2>0){
  70. int status1, chPid1 =waitpid(child1,&status1,0);
  71. int status2, chPid2 =waitpid(child2,&status2,0);
  72. exit1=WEXITSTATUS(status1);
  73. exit2=WEXITSTATUS(status2);
  74. printf("%d %d %s %c \n", getpid(), child1, part11, exit1);
  75. printf("%d %d %s %c \n", getpid(), child2, part22, exit2);
  76. }
  77. else{
  78. execlp("./program3","./program3",part22, NULL);
  79. }
  80. }
  81. else{
  82. execlp("./program3","./program3",part11, NULL);
  83. }
  84. if(exit1>exit2){
  85. return exit1;
  86. }
  87. else{
  88. return exit2;
  89. }
  90.  
  91. }
  92. return 0;
  93. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement