c - trying to redirect input and output using system calls -
i'm trying read input specific file , write specific file using unix(sys calls). output part must somehow created.
i want following: ./a.out < input.txt > output.txt using these functions: fork,dup.dup2,exec,open,write,read code :
pid_t pid, runner; char *path = argv[1]; char enter[] = "/home/demo/desktop/os/ex1/ex12/code/input.txt"; char to[] = "/home/demo/desktop/os/ex1/ex12/ex1/ronen/"; char *out = "/home/demo/desktop/os/ex1/ex12/ex1/ronen/out1.txt"; char *args[] = {to, "./a.out","<",enter,">",out, null}; char *args2[] = {"cd", to, "./a.out","<",enter,">",to ,null}; if ((runner = fork()) < 0) {perror("could not make fork");} else if (runner == 0) { printf("true\n"); execvp(args2[0],args2); } else if (runner != 0) { waitpid(runner,0,0); printf("done\n"); } so it's actaully working when put "a.out" file in desktop.
however has know how can redirect exec function go spefic folder? won't have pass executable file desktop?
for reading , writing files, use normal read , write functions; you'll need have file descriptor first, you'll need use fopen.
all in all, every c tutorial i've ever seen covers opening , writing long before touches fork, wonder you've been following. i'd recommend finding intro c , read first few pages; if understand fork does, piece of cake you.
edit: also, might misunderstand
program arguments <from_file >to_file does when using on shell:
the shell reads line, , calls program, passing arguments as... arguments. detects < , > on line , "bends" standard input , output file descriptors (yes, standard input , output behave that), fopened files.
program never sees <from_file nor >to_file.
edit in comment say:
i can not use fopen , functions. .fork,dup.dup2,exec,open,write,read
obviously, fopen wrapper open , returns file descriptor open returns.
also, program uses plenty libc functions; if you'd allowed write, shouldn't use printf, handy formatting wrapper puts, wrapper write. similar things apply all functions call, ie. waitpid, execvp, perror. should document requirements for yourself, first.
Comments
Post a Comment