linux编程 新建一个进程的方法
学习到一种,直接调用系统函数,在类的构造函数中直接启动一个线程,例如,某个类是用来监听串口的,可以直接在其构造函数中调用系统函数,开辟一个进程,在该进程对应的函数中不断while(1){....}
how to cancel a thread:
for example:
#include<stdio.h>
#include<pthread.h>
class CTcp
{
public:
CTcp();
static void* CTcpThreadFuncWrapper(void*param)
{
CTcp* ptr = (Ctcp*)param;
pthread_setcancelstate(PTHREAD_CANCEL_ENABLE,NULL);
pthread_setcanceltype(PTHREAD_CANCEL_DEFERRED,NULL);
ptr->TcpThreadRun();
return 0;
}
private:
pthread_t TcpThread;
bool TcpThread_alive;
void TcpThreadRun();
void TcpThreadCancel();
};
cpp filile:
CTcp::CTcp()
{
….......
//start newthread in construct func, of course, you can write another func
//to startthrea.
pthread_attr_tattr;
pthread_attr_init(&attr);
pthread_attr_setstacksize(&attr,65536);
//pthread_create是类Unix操作系统(Unix、Linux、Mac OS X等)的创建线程的函数。它的功能是//创建线程(实际上就是确定调用该线程函数的入口点),在线程创建以后,就开始运行相关的线程函数。
//pthread_create的返回值表示成功,返回0;表示出错,返回表示-1。
if(pthread_create(&TcpThread,&attr,CTcp::CTcpThreadFuncWrapper,this))
{
TcpThread_alive=false;
}
else{
TcpThread_alive=true;
}
pthread_attr_destroy(&attr);
}
voidCTcp::TcpThreadRun()
{
while(1)
{
…......
usleep(20000);
}
}
voidCTcp::TcpThreadCancel()
{
if(TcpThread_alive==true)
{
interr=0;
err=pthread_cancel(m_pthread);
if(0==err)//canclesuccessfully
{
m_history_path_thread_alive=false;
}
else{
if(err==3)//Nosuchprocess
{
m_history_path_thread_alive=false;
}
}
}
}
https://www.cnblogs.com/lijunamneg/archive/2013/01/25/2877211.html
linux编程 新建一个进程的方法的更多相关文章
- (转)如何在Linux中统计一个进程的线程数
如何在Linux中统计一个进程的线程数 原文:http://os.51cto.com/art/201509/491728.htm 我正在运行一个程序,它在运行时会派生出多个线程.我想知道程序在运行时会 ...
- 【Android手机测试】linux内存管理 -- 一个进程占多少内存?四种计算方法:VSS/RSS/PSS/USS
在Linux里面,一个进程占用的内存有不同种说法,可以是VSS/RSS/PSS/USS四种形式,这四种形式首字母分别是Virtual/Resident/Proportional/Unique的意思. ...
- Linux内存管理 一个进程究竟占用多少空间?-VSS/RSS/PSS/USS
关键词:VSS.RSS.PSS.USS._mapcount.pte_present.mem_size_stats. 在Linux里面,一个进程占用的内存有不同种说法,可以是VSS/RSS/PSS/US ...
- 给Linux内核增加一个系统调用的方法(转)
作者:chenjieb520 给Linux内核增加一个系统调用的方法 为了更加好地调试linux内核,笔者的实验均在mini6410的arm板上运行的.这样做的原因,第一是因为本人是学嵌入式的, ...
- Linux编程实现守护进程
Linux 守护程序 守护进程(Daemon)它是在一个特定的过程的背景进行.它独立于控制终端的和周期性地执行某些任务或待某些事件.是一种非常实用的进程. Linux的大多数server就是用守护进程 ...
- Linux下强制杀死进程的方法
常规篇: 首先,用ps查看进程,方法如下: $ ps -ef …… smx 1822 1 0 11:38 ? 00:00:49 gnome-terminal smx 1823 1822 0 11:38 ...
- 如何在 Linux 中统计一个进程的线程数
编译自:http://ask.xmodulo.com/number-of-threads-process-linux.html作者: Dan Nanni原创:LCTT https://linux.cn ...
- Linux如何创建一个进程
关于准备知识: 每个进程都有以下属性: 1 地址空间 每个进程都有自己的进程地址空间,格式大概是这个样子: 栈(Stack)以帧为单位,当程序调用函数(假如该函数名为fun01)时,stack会向下 ...
- Linux编程 6 (查看进程 ps 及输出风格)
一.查看进程命令ps 1.1 默认ps 命令 在默认情况下,ps命令只会显示运行在当前控制台下,属于当前用户的进程,在上图中,我们只运行了bash shell以及ps命令本身. 上图中显示了程序的进程 ...
随机推荐
- Picture Control 加载路径图片
//CBitmap bitmap; //HBITMAP hBmp; //bitmap.LoadBitmap(strImgPath); //hBmp = (HBITMAP)bitmap.GetSafeH ...
- PHP var_dump() 函数
var_dump() 函数用于输出变量的相关信息 <?php $b = 3.1; $c = true; var_dump($b, $c); ?> 输出 float(3.1) bool(tr ...
- js检测手机上是否有此APP,有的话打开应用,没有的话跳转到appstore
//html代码中 的 a 标签,以微信为例,默认的是调用weixin scheme,去打开本机的微信,如果没有则跳转到相应连接 <a href="weixin://" cl ...
- 设计模式-Iterator
本文参(chao)考(xi)<图解设计模式> 结城浩 (作者) 杨文轩 (译者) 1.Iterator 模式 迭代器作用于集合,是用来遍历集合元素的对象. 迭代器模式提供一种方法顺序访问一 ...
- java 静态数组 和非静态数组的区别
区别:1,数组创建时间不同,静态的是一定义出来就创建了,动态的则是定义时不创建,使用时才创建,一定意义上节省了内存空间.2,使用场景不同,一开始就知道数组长度的使用静态初始化,反之,动态初始化. 静态 ...
- #C++初学记录(遍历)
hide handkerchief Problem Description The Children's Day has passed for some days .Has you remembere ...
- Mysql sql_mode设置 timestamp default 0000-00-00 00:00:00 创建表失败处理
往数据库里创建新表的时候报错: [Err] 1067 - Invalid default value for 'updateTime' DROP TABLE IF EXISTS `passwd_res ...
- CESIUM内置shader变量和函数[转]
cesium中内置了一些常量.变量和函数,在vs和fs中可直接使用. 内置uniform 内置uniform主要置于AutomaticUniforms类里面,该类私有未开放文档. czm_backgr ...
- linux设备树编译器DTC【转】
本文转载自:https://blog.csdn.net/chenmiaowu88/article/details/54342823 参考文件: \kernel\Documentation\device ...
- 透过字节码分析Java动态代理机制。
一.创建动态代理代码 1.创建接口 public interface Subject { void request(); } 2.创建接口实现类 public class RealSubject im ...