예제 #1
0
파일: fqd.c 프로젝트: Sphonic/fq
int main(int argc, char **argv) {
  nodeid = get_my_ip();
  parse_cli(argc,argv);
  if(nodeid == 0) {
    fprintf(stderr, "Could not determine host address, use -n <ip>\n");
    exit(-1);
  }
  signal(SIGPIPE, SIG_IGN);
  if(foreground) {
    fqd_config_init(nodeid, config_path, queue_path);
    listener_thread(NULL);
    exit(0);
  }
  else {
    int pid, fd;

    /* Handle stdin/stdout/stderr */
    fd = open("/dev/null", O_RDONLY);
    if(fd < 0 || dup2(fd, STDIN_FILENO) < 0) die("Failed to setup stdin");
    close(fd);
    fd = open("/dev/null", O_WRONLY);
    if(fd < 0 || dup2(fd, STDOUT_FILENO) < 0 || dup2(fd, STDERR_FILENO) < 0)
      die("Failed to setup std{out,err}");
    close(fd);

    /* daemonize */
    pid = fork();
    if(pid < 0) die("Failed to fork");
    if(pid > 0) exit(0);
    setsid();
    pid = fork();
    if(pid < 0) die("Failed to fork");
    if(pid > 0) exit(0);

    /* run */
    fqd_config_init(nodeid, config_path, queue_path);
    listener_thread(NULL);
  }
  return 0;
}
예제 #2
0
int main(int argc, char* argv[])
{
	std::vector<std::string> commands;
	commands.push_back("python run.py");
	commands.push_back("python run.py");
	thread_flag terminate(false);
	thread_flag finished(false);
	std::thread runner_thread(runner, &terminate, &finished, commands);
	std::thread listener_thread(listener, &terminate, &finished);
	runner_thread.join();
	listener_thread.join();
	return 0;
}
int main(int argc, char** argv) {

	ros::init(argc, argv, "talker");
	ros::NodeHandle n;
	ros::Publisher chatter_pub = n.advertise<std_msgs::Float64>("chatter", 100);
	ros::Rate loop_rate(5);
	int count = 0;
	boost::thread listener_thread(listener);
	std_msgs::Float64Ptr timestamp(new std_msgs::Float64);
	while (ros::ok()) {
		timestamp->data = ros::WallTime::now().toSec();
		chatter_pub.publish(timestamp); // <---- note we pass a shared pointer here, not an object itself!
		ros::spinOnce();
		loop_rate.sleep();
		++count;
	}
	listener_thread.join();
}
예제 #4
0
int main() {

    if (!canopen::openConnection("/dev/pcan32")) {
        std::cout << "Cannot open CAN device" << std::endl;
        return -1;
    }

    std::thread listener_thread(listener_func);

    canopen::initDevice(12);
    std::this_thread::sleep_for(std::chrono::milliseconds(50));
    canopen::homing(12);
    std::this_thread::sleep_for(std::chrono::milliseconds(50));
    canopen::statusWord(12);
    canopen::modesOfOperationDisplay(12);

    std::this_thread::sleep_for(std::chrono::seconds(5));
    canopen::ipMode(12);
    canopen::sendSync();
    std::this_thread::sleep_for(std::chrono::milliseconds(10));

    /*
    int pos = 0;
    for (int i=0; i<1000; i++) {
      canopen::sendPos("schunk_default_rPDO_12", pos);
      pos += 100;
      std::this_thread::sleep_for(std::chrono::milliseconds(10));
      canopen::sendSync();
      }
    */
    std::this_thread::sleep_for(std::chrono::seconds(5));
    // listener_thread.join();

    canopen::closeConnection();
    return 0;
}
예제 #5
0
파일: canopen.cpp 프로젝트: ipa-tys/canopen
 void initListenerThread(std::function<void ()> const& listener) {
   std::thread listener_thread(listener);
   listener_thread.detach();
   std::this_thread::sleep_for(std::chrono::milliseconds(10));
 }