linux C 多线程获取字符输入方法

原创 2016年08月28日 14:22:06

#define READ_BUF_LEN                8

pthread_t lTestThread;


static void *doTestThreadFunc(void *parg)
{
	char acBuf[READ_BUF_LEN];
	char cCounti;
	int nTestData;

	while(1)
	{
		memset(acBuf, 0, READ_BUF_LEN);
		printf("input:");

		fgets(acBuf, READ_BUF_LEN, stdin);
		for(cCounti=0; cCounti<READ_BUF_LEN; cCounti++)
		{
			if(acBuf[cCounti] == '\n')
			{
				acBuf[cCounti] = '\0';
				break;
			}
		}

		printf("-- %s --\n", acBuf);
		nTestData = strtol(acBuf, NULL, 0);
		printf("0x%x \n", nTestData);

		startSettingFunc(nTestData);
	}

	pthread_exit(NULL);
}

容易出错的地方:

1)必须明确使用 fgets 的长度,谨慎使用 strlen() 函数,当没有输入时,strlen() 获取到的长度就为 0,是错的;

2)线程互斥锁只能锁临界资源,不能锁再线程 while(1) 外面,容易导致死锁;




多线程编程(二)——面试题,每个线程只打印一种字符,多个线程协同顺序打印n次字符串(求大神的其他实现方案)

(这个是欢聚时刻(YY)的笔试题,在笔试的时候没有写出来,后来自己写了出来,希望大神能给出更优秀的解决方案……ps:现在面试官总有面试时问笔试编程题思路的习惯,呵呵) 题目简述: 输入一个...

C库提供了三个读取字符串的函数:gets( ) fgets( ) scanf( )。

C库提供了三个读取字符串的函数:gets( )  fgets( )  scanf( )。 gets()---get string 从系统的标准输入设备(通常是键盘)获得一个字符串。因为字符串没有预定...

【Linux C/C++】 第08讲 多线程TCP传输文件/select模型

多线程TCP传输文件/select模型

Linux C 多线程【3】--传递参数&共享进程数据

Linux多线程编程的基本的函数  1线程创建     函数原型:                     #include  int pthread_creat...

Linux C进程与多线程入门—(2)等待进程

本文出自http://www.wenbanana.com/?p=363稻草人博客,欢迎访问!  问题          在创建进程这一节内容中,我们看到,消息的输出是父子进程交替输出,且父进程...

自学Linux C时遇到的多线程问题

学习多线程时关于遇到问题自己的猜想,不知道对不对,请多指正。 先来看一段代码,就是著名的生产者消费者问题。 #include #include char store[5]; int g_...

linux c编程 多线程(初级)

进程简单的说就是把一段代码复制成多份,并让他们同时执行。进程间通信是为了让他们有序的运行 线程简单的说就是让多个函数同时执行,线程间通信是为了让他们有序的运行 编译...

Linux c 多线程 互斥量

多线程: 1.      了解多线程         解决多任务实现         历史上Unix服务器不支持多线程         Unix/Linux上实现多线程有两种方法:     ...

Linux C进程与多线程入门—(1)创建进程

本文出自http:http://www.wenbanana.com/?p=351稻草人博客,欢迎访问!  进程和程序的区别 进程和程序的区别可以理解为,进程是活动的程序,而程序是一个代...

Linux C进程与多线程入门—(5)使用互斥量进行同步

本文出自http://www.wenbanana.com/?p=446稻草人博客,欢迎访问!  互斥 简单地理解就是,一个线程进入工作区后,如果有其他线程想要进入工作区,它就会进入等待...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:linux C 多线程获取字符输入方法
举报原因:
原因补充:

(最多只允许输入30个字)