Running daemon through rsh

Posted by Max on Stack Overflow See other posts from Stack Overflow or by Max
Published on 2010-04-28T14:20:23Z Indexed on 2010/04/28 14:23 UTC
Read the original article Hit count: 235

Filed under:
|
|
|
|

I want to run program as daemon in remote machine in Unix. I have rsh connection and I want the program to be running after disconnection.

Suppose I have two programs: util.cpp and forker.cpp.

util.cpp is some utility, for our purpose let it be just infinite root.

util.cpp

int main() {
    while (true) {};
    return 0;
}

forker.cpp takes some program and run it in separe process through fork() and execve():

forker.cpp

#include <stdio.h>
#include <errno.h>
#include <stdlib.h>
#include <unistd.h>

int main(int argc, char** argv) {
  if (argc != 2) {
    printf("./a.out <program_to_fork>\n");
    exit(1);
  }

  pid_t pid;

  if ((pid = fork()) < 0) {
    perror("fork error.");
    exit(1);
  } else if (!pid) {
    // Child.
    if (execve(argv[1], &(argv[1]), NULL) == -1) {
      perror("execve error.");
      exit(1);
    }
  } else {
    // Parent: do nothing.
  }
  return 0;
}

If I run:

./forker util

forker is finished very quickly, and bash 'is not paused', and util is running as daemon.

But if I run:

scp forker remote_server://some_path/
scp program remote_server://some_path/
rsh remote_server 'cd /some_path; ./forker program'

then it is all the same (i.e. at the remote_sever forker is finishing quickly, util is running) but my bash in local machine is paused. It is waiting for util stopping (I checked it. If util.cpp is returning than it is ok.), but I don't understand why?!

There are two questions:

1) Why is it paused when I run it through rsh?

I am sure that I chose some stupid way to run daemon. So

2) How to run some program as daemon in C/C++ in unix-like platforms.

Tnx!

© Stack Overflow or respective owner

Related posts about rsh

Related posts about unix