【Linux回调函数的测试】

【Linux回调函数的测试】为了测试回调函数的应用和参数的添加而进行的 Linux 线程打印 printest

大家好,欢迎来到IT知识分享网。

#include <stdlib.h> #include <stdio.h> #include <signal.h> #include <unistd.h> #include <stdint.h> #include <math.h> #include <string.h> #include <pthread.h> void printtest(char *str) { printf("printtest str=%s\n", str); } void printtest2(char *str) { printf("printtest2 =%s\n", str); } struct printst { void (*print1)(char *str); char *savestr; }; void *threadloop( void *arg ) { struct printst *printest = (struct printst *)arg; while (1) { printest->print1(printest->savestr); sleep(1); } } int print_callback( void (*print1)(char *str), char *savestr ) { /*/不能使用static和局部变量,否则函数运行结束数据释放 程序出错 需要在整个线程运行阶段进行malloc,确保数据一直有地方存放, 线程结束后才进行free */ struct printst *printest = malloc(sizeof(struct printst)); if(NULL == printest) return -1; printest->print1 = print1; printest->savestr = savestr; //printest.print1(printest.savestr); pthread_t test1; pthread_create(&test1, NULL, threadloop, printest ); //free(printest);//不能free,否则线程无法找到数据,段错误 } int main(int argc, char *argv[]) { char test[20]="have a good day"; print_callback( printtest2,test ); print_callback( printtest,test ); while(1) { sleep(1); } } 

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/147551.html

(0)
上一篇 2025-04-06 18:33
下一篇 2025-04-06 18:45

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信