+ if (access(argv[0], X_OK)) {
+ fprintf(stderr, "%s: cannot execute\n", argv[0]);
+ exit(1);
+ }
+
+ close(1);
+ close(2);
+ signal(SIGHUP, SIG_IGN);
+ signal(SIGINT, SIG_IGN);
+ signal(SIGQUIT, SIG_IGN);
+
+ child = fork();
+ if (child != 0) {
+ fp = fopen(pidfilename, "w");
+ if (fp != NULL) {
+ fprintf(fp, "%d\n", child);
+ fclose(fp);
+ }
+ exit(0);
+ }
+