pdp11v/usr/src/cmd/nohup.c
/* @(#)nohup.c 1.4 */
#include <stdio.h>
char nout[100] = "nohup.out";
char *getenv();
extern char *sys_errlist[];
extern int errno;
main(argc, argv)
char **argv;
{
char *home;
FILE *temp;
int err;
if(argc < 2) {
fprintf(stderr,"usage: nohup command arg ...\n");
exit(1);
}
argv[argc] = 0;
signal(1, 1);
signal(3, 1);
if(isatty(1)) {
if( (temp = fopen(nout, "a")) == NULL) {
if((home=getenv("HOME")) == NULL) {
fprintf(stderr,"nohup: cannot open/create nohup.out\n");
exit(1);
}
strcpy(nout,home);
strcat(nout,"/nohup.out");
if(freopen(nout, "a", stdout) == NULL) {
fprintf(stderr,"nohup: cannot open/create nohup.out\n");
exit(1);
}
}
else {
fclose(temp);
freopen(nout, "a", stdout);
}
fprintf(stderr, "Sending output to %s\n", nout);
}
if(isatty(2)) {
close(2);
dup(1);
}
execvp(argv[1], &argv[1]);
err = errno;
/* It failed, so print an error */
freopen("/dev/tty", "w", stderr);
fprintf(stderr,"%s: %s: %s\n", argv[0], argv[1], sys_errlist[err]);
exit(1);
}