scott@udel.EDU (Doke) (07/19/90)
I am working on a sun3/50 with SunOS 4.1. My problem concerns the interpreter file feature of execve(2). I have been in the habit of making interpreter files so everything is in one executable file. I ran into a problem which I don't understand when I tried to do this with rdist(1). I can work around it, but would like to know why this doesn't work. Please reply by mail, I will summarize to the net. Thanks in advance, Doke Scott This is my executable file "test". malcom is another sun3/50 also running SunOS 4.1. #!/usr/ucb/rdist -f # hosts = ( scott@malcom.ee.udel.edu ) files = ( ~/rdist/rdist_test ) ${files} -> ${hosts} install; If I say % rdist -f test it works fine. However, if I just say % test updating host malcom.ee.udel.edu rcmd: socket: Permission denied The error message comes back immediately. I found this very confusing, and wrote a little C program to call rdist: #include <stdio.h> main ( argc, argv, envp ) int argc; char **argv, **envp; { int i; for ( i = 0; i < argc; i++ ) { fputs( argv[i], stdout ); putchar( ' ' ); } putchar( '\n' ); fflush( stdout ); /* rdist was erasing the message */ execve( "/usr/ucb/rdist", argv, envp ); } and used it as the interpreter for test. #!/usa/scott/rdist/a.out -f # hosts = ( scott@malcom.ee.udel.edu ) files = ( ~/rdist/rdist_test ) ${files} -> ${hosts} install; Now test worked perfectly as a command. % test /usa/scott/rdist/a.out -f test updating host malcom.ee.udel.edu I put ps -ugx in a loop in the background and ran the two forms. Both appear to produce an identical rdist process. What's going on? Please reply by mail, I will summarize to the net.
scott@udel.EDU (Doke) (07/19/90)
I am working on a sun3/50 with SunOS 4.1. My problem concerns the interpreter file feature of execve(2). I have been in the habit of making interpreter files so everything is in one executable file. I ran into a problem which I don't understand when I tried to do this with rdist(1). I can work around it, but would like to know why this doesn't work. Please reply by mail, I will summarize to the net. Thanks in advance, Doke Scott This is my executable file "test". malcom is another sun3/50 also running SunOS 4.1. #!/usr/ucb/rdist -f # hosts = ( scott@malcom.ee.udel.edu ) files = ( ~/rdist/rdist_test ) ${files} -> ${hosts} install; If I say % rdist -f test it works fine. However, if I just say % test updating host malcom.ee.udel.edu rcmd: socket: Permission denied The error message comes back immediately. I found this very confusing, and wrote a little C program to call rdist: #include <stdio.h> main ( argc, argv, envp ) int argc; char **argv, **envp; { int i; for ( i = 0; i < argc; i++ ) { fputs( argv[i], stdout ); putchar( ' ' ); } putchar( '\n' ); fflush( stdout ); /* rdist was erasing the message */ execve( "/usr/ucb/rdist", argv, envp ); } and used it as the interpreter for test. #!/usa/scott/rdist/a.out -f # hosts = ( scott@malcom.ee.udel.edu ) files = ( ~/rdist/rdist_test ) ${files} -> ${hosts} install; Now test worked perfectly as a command. % test /usa/scott/rdist/a.out -f test updating host malcom.ee.udel.edu I put ps -ugx in a loop in the background and ran the two forms. Both appear to produce an identical rdist process. What's going on? Please reply by mail, I will summarize to the net.