UNIX环境高级编程 - 17. 高级进程间通信

Posted r0124

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了UNIX环境高级编程 - 17. 高级进程间通信相关的知识,希望对你有一定的参考价值。

函数getopt

解析进程的入参。函数原型

int getopt(int argc,char * const argv[ ],const char * optstring);

解释一下optstring,这是选项字符串,其中后接:的表示需要解析后面的入参。全部解析结束之后getopt返回-1。

以下示例节选自nurses 5.7。

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

static void usage(void)
{
    static const char *tbl[] =
    {
        ""
            ,"Options:"
            ,"  -c          set control characters"
            ,"  -s          size of file"
            ,"  -t string   time"
            ,"  -V          print curses-version"
            ,"  -w          set window-size"
    };
    unsigned n;
    (void) fprintf(stderr, "Usage: %s [options] [terminal]
", "test");

    for (n = 0; n < sizeof(tbl) / sizeof(tbl[0]); ++n)
        fprintf(stderr, "%s
", tbl[n]);

    return;
    /* NOTREACHED */
}


int main (int argc, char **argv)
{
    int ch = 0, opt_c = 0, size = 0;
    char *time = NULL;

    while ((ch = getopt(argc, argv, "cs:t:w")) != -1)
    {
        switch (ch)
        {
            case ‘c‘:
                opt_c = 1;
                break;
            case ‘s‘:
                size = atoi(optarg);
                break;
            case ‘t‘:
                time = optarg;
                break;
            case ‘?‘:
            default:
                usage();
        }
    }

    printf("opt_c is %d
", opt_c);
    printf("size is %d
", size);
    printf("time is %s
", time);

    return 0;
}

以上是关于UNIX环境高级编程 - 17. 高级进程间通信的主要内容,如果未能解决你的问题,请参考以下文章

Unix环境高级编程(十六)进程间通信

高级进程间通信

Linux/Unix 多线程通信

UNIX环境高级编程:文件I/O

linux高级编程之socket进程通信

进一步学习的书籍