选主机测评网
主机测评优惠网

Linux多线程编程的基本的函数有哪些

  1线程创建 函数原型: #include

int pthread_create(pthread_t *restrict tidp,const pthread_attr_t *restrict attr, void *(*start_rtn)(void),void *restrict arg); 返回值:若是成功建立线程返回0,否则返回错误的编号 形式参数: pthread_t *restrict tidp 要创建的线程的线程id指针 const pthread_attr_t *restrict attr 创建线程时的线程属性 void* (start_rtn)(void) 返回值是void类型的指针函数 vodi *restrict arg start_rtn的行参 例题1: 功能:测试建立一个新的线程 程序名称: pthread_test。
  c #include

#include void *create(void *arg)。。。{ printf(\”new thread created 。。。。。 \”); }int main(int argc,char *argv[])。
  。。{ pthread_t tidp; int error; error=pthread_create(&tidp,NULL,create,NULL); if(error!=0) 。。。。。。{ printf(\”pthread_create is not created 。
  。。 \”); return -1; } printf(\”prthread_create is created。。。 \”); return 0;} 编译方法:#gcc -Wall -lpthread pthread_test。
  c 因为pthread的库不是linux系统的库,所以在进行编译的时候要加上-lpthread,否则编译不过,会出现下面错误thread_test。c: 在函数 ‘create’ 中:thread_test。c:7: 警告: 在有返回值的函数中,程序流程到达函数尾/tmp/ccOBJmuD。
  o: In function `main\’:thread_test。c:(。text+0x4f):对‘pthread_create’未定义的引用collect2: ld 返回 1。

Linux下的编程PHP有什么技巧

可以在一个数组的开头或结尾处添加元素,还可以使用array_merge()来建立一个包含二个或更多数组中元素的新数组,合并时,元素的顺序会按指定的顺序排列,如果原来的数组是被排过序的,在合并后需要对它重新排序。 我们可以首先利用array_push()在数组的结尾处添加一个元素:

运行上面的程序将得到下面的结果:

0 : apple

1 : orange

2 : banana

3 : kiwi

4 : pear

5 : grape

6 : pineapple

7 : tomato如果需要在数组的开头添加元素,其代码与上面的代码差不多。

linux命令行参数编程是怎样的

  GNU/Linux的命令行选项有两种类型:短选项和长选项,前者以 \’-\’ 作为前导符,后者以 \’–\’ 作为前导符

。比如有一个命令:

$ myprog -a vv –add -b –file a。txt b。txt – — -e c。
  txt

在GNU/Linux系统,对这种情况的一种合理解释是:

a是短选项,带一个参数vv;

add是长选项,无参数;

b是短选项,无参数;

file是长选项,带一个参数a。txt;

b。txt是参数;

-是参数,通常表示标准输入,stdin;

–是一个指示符,表明停止扫描参数,其后所有部分都是参数,而不是选项;

-e是参数;

c。
  txt是参数

为了简化程序设计,有几个库函数可以优雅地分析命令行参数,原型如下:

#include

int getopt(int argc, char * const argv[],

const char *optstring);

extern char *optarg;

extern int optind, opterr, optopt;

#define _GNU_SOURCE

#include

int getopt_long(int argc, char * const argv[],

const char *optstring,

const struct option *longopts, int *longindex);

int getopt_long_only(int argc, char * const argv[],

const char *optstring,

const struct option *longopts, int *longindex);

我们先看看用于分析短参数的getopt函数。
  参数含义如下:

argc, argv是从main函数获取的参数,原样传给getopt;

optstring指示如何分析参数。

关于optstring,还有几点说明:

如果选项带参数,该选项后接冒号,比如上例中optstring为\”a:b\”,指示a带参数,b没有参数;

如果选项带可选参数,该选项后接两个冒号,比如\”a::b\”,表明a可能有参数,也可能没有;

如果optstring的开头字符为\’:\’,表明如果指明选项带参数,而实际命令行没有参数时,getopt返回\’:\’而不是\’?\'(默认情况下返回\’?\’,和无法识别的参数返回一样);

如果optstring的开头字符为\’+\’,表明一但遇到一个无选项参数,马上停止扫描,随后的部分当作参数来解释;

如果optstring的开头字符为\’-\’,表明如果遇到无选项参数,则把它当作选项1(不是字符\’1\’)的参数

该函数每解析完一个选项,就返回该选项字符。
  

如果选项带参数,参数保存在optarg中。如果选项带可选参数,而实际无参数时,optarg为NULL。

当遇到一个不在optstring指明的选项时,返回字符‘?’。如果在optstring指明某选项带参数而实际没有参数时,返回字符‘?’或者字符‘:’,视optstring的第一个字符而定。
  这两种情况选项的实际值被保存在optopt中。

当解析错误时,如果opterr为1则自动打印一条错误消息(默认),否则不打印。

当解析完成时,返回-1。

每当解析完一个argv,optind就会递增。如果遇到无选项参数,getopt默认会把该参数调后一位,接着解析下一个参数。
  如果解析完成后还有无选项的参数,则optind指示的是第一个无选项参数在argv中的索引。

函数getopt_long()的工作方式类似于getopt(),不过它还能接收长选项。在接收长选项之前,我们必须定义个一个结构体数组变量longopts,指明我们希望获取的长选项。
  

struct option {

const char *name;

int has_arg;

int *flag;

int val;

};

含义如下:

name指明长选项的名称;

has_arg指明该选项是否带参数,1为是,0为否,2为可选;

flag指明长选项如何返回,如果flag为NULL,则getopt_long返回val。
  否则返回0,flag指向一个值为val的变量。如果该长选项没有发现,flag保持不变;

val指明返回的值,或者需要加载到被flag所指示的变量中。

option数组的最后一个元素必须全部填充0。

getopt_long的最后一个参数longindex在函数返回时指向被搜索到的选项在longopts数组中的下标。
  longindex可以为NULL,表明不需要返回这个值。

未经允许不得转载:选主机测评网 » Linux多线程编程的基本的函数有哪些
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址