#include #include #include #include #include #include #include typedef struct { char *f_mqname; int f_verbose; int f_helper; } mqueue_params; mqueue_params g_params; void helper(char *progname) { printf("Usage: %s [OPTS]\n\n" "Version: 0.0.1 \n" "-m mqueue name\n" "-v verbose output\n" "-h help options\n" "\n" , progname); } #define full_mqpath_len 1024 int main(int argc, char **argv) { //stack params int c,err; int i; int mq_fd; char full_mqpath[full_mqpath_len]; memset(&g_params,0,sizeof(g_params)); //process arguments while ((c = getopt(argc, argv, "m:vh")) != -1) { switch (c) { case 'm': g_params.f_mqname = optarg; break; case 'v': g_params.f_verbose = 1; break; case 'h': default: helper(argv[0]); exit(1); } } if (g_params.f_helper) { helper(argv[0]); return 0; } //set mqueue name if (g_params.f_mqname == NULL) { g_params.f_mqname = "/stack-0"; } //compose string memset(&full_mqpath[0], 0, full_mqpath_len); snprintf(&full_mqpath[0], full_mqpath_len-1, "%s", g_params.f_mqname); if (g_params.f_verbose) { printf("Full path: %s\n",&full_mqpath); } mq_fd = mq_open(g_params.f_mqname,O_RDWR | O_CREAT, 0666, NULL); err = errno; if (mq_fd == -1) { if (g_params.f_verbose) { printf("ERROR:%d,%s\n",err,strerror(err)); } return -1; } printf("%s\n",g_params.f_mqname); close(mq_fd); return 0; }