using truss -t'open' $(program_call) get:
open("command.txt", o_rdonly|o_nonblock) = 5 response fifo file descriptor = -1 // open call literally sandwiched between print commands, not here? response fifo file descriptor = 9 open("response.txt", o_wronly|o_nonblock) err#6 enxio response.txt: no such device or address the thing is, initialized file descriptor -1, know open call must have succeeded because changed value of variable. file descriptor literally initialized -1, somehow gets changed 9 in open command call (otherwise program end there) yet open call not show in truss call, , computer not recognize being open.
some code:
if ((outfd = open(cmd_fifo_name, o_wronly | o_nonblock)) == -1) { fprintf(stderr, "client: failed open %s fifo.\n", cmd_fifo_name); exit(1); } printf("resp_fifo file descriptor: %d\n", infd); /* open response fifo non-blocking reads. */ if ((infd = open(resp_fifo_name, o_rdonly | o_nonblock)) == -1) { fprintf(stderr, "client: failed open %s fifo.\n", resp_fifo_name); exit(1); } else printf("resp_fifo file descriptor: %d\n", infd);
truss -f -t'open,close,read,write' run.sh useful enough find errors, run.sh bash file containing proper execution of program.
Comments
Post a Comment