Chinaunix首页 | 论坛 | 博客
  • 博客访问: 910618
  • 博文数量: 299
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 2493
  • 用 户 组: 普通用户
  • 注册时间: 2014-03-21 10:07
个人简介

Linux后台服务器编程。

文章分类

全部博文(299)

文章存档

2015年(2)

2014年(297)

发布时间:2014-07-14 16:19:19

Linux进程间的通信可以简称为IPC(Interprocess Communication),前面说过的 Linux的同步工具也是属于IPC的一部分,这里我想说的是通常意义的进程间的实际数据通。1管道管道是最早的UNIX IPC,所有的UNIX系统都支持这个IPC通信机制。我们最常见到使用它的位置就是shell中使用的管道命令.........【阅读全文】

阅读(1697) | 评论(0) | 转发(0)

发布时间:2014-07-12 10:21:17

【代码】申请一个共享内存区,attach到进程当中,然后通过fork创建子进程。理论上子进程和父进程是各自有在自己的内存空间,对变量的修改互不影响的,但是共享内存中的数据由子进程修改以后,父进程可以得知。#include <stdio.h>#include <sys/types.h>#include <sys/ipc.h>#include <sys/shm.h>extern in.........【阅读全文】

阅读(1488) | 评论(0) | 转发(0)

发布时间:2014-07-10 15:54:42

文件锁、信号等进程通信方法无法实现在进程见传递大量数据,如果使用文件锁,进程见信息的传递将受到磁盘读取速度的限制。管道作为最早的进程间通信机制,实现了父子进程或者兄弟进程之间的数据读写。 Linux系统中的管道都是半双工的,所以要实现双工通信就需要创建2个管道来完成了;某些UNIX版本的管道是全.........【阅读全文】

阅读(1230) | 评论(0) | 转发(0)

发布时间:2014-07-10 12:18:17

信号是进程之间通信的另外一种方式。之前用过kill -l看了Linux系统支持的所有信号,这些信号在sys/signal.h中定义,系统支持64种信号。除了系统内核和root之外,只有具备相同uid、gid的进程才可以使用信号进行通信。gaolu@gaolu-desktop:~$1、信号的产生(1)kill函数函数调用形式为int kill(pid_t pid,i.........【阅读全文】

阅读(1405) | 评论(0) | 转发(0)

发布时间:2014-07-10 09:59:27

在Linux系统中,进程运行在自己的虚拟内存空间中,如何协调不同虚拟地址空间中的进程访问一个非共享资源,文件加锁是基本进程通信方法之一。 可以使用fcntl()、lockf()、flock()实现文件锁,进而实现进程之间的通信。 1.fcntl()【函数介绍】调用形式(执行失败返回-1):int fcntl.........【阅读全文】

阅读(1321) | 评论(0) | 转发(0)

发布时间:2014-07-09 11:58:47

SIGHUP信号与控制终端UNIX中进程组织结构为 session (会话)包含一个前台进程组及一个或多个后台进程组,一个进程组包含多个进程。一个session可能会有一个session首进程,而一个session首进程可能会有一个控制终端。一个进程组可能会有一个进程组首进程。进程组首进程的进程ID与该进程组ID相等。这儿是可.........【阅读全文】

阅读(1270) | 评论(0) | 转发(0)

发布时间:2014-07-05 17:39:43

使用信号和管道传递消息存在一定的限制:信号传递的消息有限,管道虽然可以传输一定量的信息,但是只能传递无格式的字节流。3种新的进程间通信(IPC)机制---消息队列、信号量、共享内存,可以解决这些问题。这些机制最早出现在UNIX中,被编入POSIC:XSI中,Linux支持POSIX标准。 (1)关于IPC资源消息队.........【阅读全文】

阅读(2012) | 评论(0) | 转发(0)

发布时间:2014-06-02 21:18:22

一 信号的种类可靠信号与不可靠信号, 实时信号与非实时信号可靠信号就是实时信号, 那些从UNIX系统继承过来的信号都是非可靠信号, 表现在信号不支持排队,信号可能会丢失, 比如发送多次相同的信号, 进程只能收到一次. 信号值小于SIGRTMIN的都是非可靠信号.非可靠信号就是非实时信号, 后来, Linux改进了.........【阅读全文】

阅读(1272) | 评论(0) | 转发(0)

发布时间:2014-05-23 15:40:46

本文将从以下几个方面来阐述信号:(1)信号的基本知识(2)信号生命周期与处理过程分析(3) 基本的信号处理函数(4) 保护临界区不被中断(5) 信号的继承与执行(6)实时信号中锁的研究 第一部分: 信号的基本知识 1.信号本质: 信号的本质是软件层次上对中断的一种.........【阅读全文】

阅读(1533) | 评论(0) | 转发(0)

发布时间:2014-05-11 23:05:35

Why semaphores?Posix semaphores are easy to usesem_initsem_waitsem_postsem_getvaluesem_destroyExercises   1   2   3Now it is time to take a look at some cod.........【阅读全文】

阅读(1256) | 评论(0) | 转发(1)

发布时间:2014-03-24 12:27:58

......【阅读全文】

阅读(817) | 评论(0) | 转发(0)

发布时间:2014-03-21 15:40:31

Google Protocol Buffer 的使用和原理Protocol Buffers 是一种轻便高效的结构化数据存储格式,可以用于结构化数据串行化,很适合做数据存储或 RPC 数据交换格式。它可用于通讯协议、数据存储等领域的语言无关、平台无关、可扩展的序列化结构数据格式。目前提供了 C++、Java、Python 三种语言的.........【阅读全文】

阅读(975) | 评论(0) | 转发(0)

发布时间:2014-03-21 12:35:00

pthreads 的基本用法介绍 POSIX 线程线程问题是令许多程序员头痛的问题。UNIX 的进程模型简单易懂,但有时效率低下。线程技术通常能使性能得到实质性的改进,付出的代价就是代码有点混乱。本文揭开了 POSIX 线程接口的神秘面纱,并提供了线程化代码的实际例子作为参考。.........【阅读全文】

阅读(974) | 评论(0) | 转发(1)
给主人留下些什么吧!~~

tianyashuibin2014-12-08 11:22

Oscarzhao:c++11 中貌似可以

嗯,是的,在c++11中可以

下面是在gcc的编译结果:
test_struct.cc:8:11: warning: non-static data member initializers only available with -std=c++11 or -std=gnu++11 [enabled by default]
   int a = 1;
           ^

回复  |  举报

Oscarzhao2014-11-26 20:12

tianyashuibin:除了静态数据成员外,数据成员不能在类体内显式的初始化

举个最简单例子
struct a

  int a=1;
  int b=2;
};
这也不能通过啊!
原因很简单,因为struct a此时只是在说明有这么个类型,而并没有定义一个具体的变量和分配内存空间

c++11 中貌似可以

回复  |  举报

tianyashuibin2014-10-23 21:57

除了静态数据成员外,数据成员不能在类体内显式的初始化

举个最简单例子
struct a

  int a=1;
  int b=2;
};
这也不能通过啊!
原因很简单,因为struct a此时只是在说明有这么个类型,而并没有定义一个具体的变量和分配内存空间

回复  |  举报

tianyashuibin2014-10-23 21:39

1.分配内存,调用构造函数时,隐式/显示的初始化各数据成员
2.进入构造函数后在构造函数中执行一般计算
  1.类里面的任何成员变量在定义时是不能初始化的。
  2.一般的数据成员可以在构造函数中初始化。
  3.const数据成员必须在构造函数的初始化列表中初始化。
  4.static要在类的定义外面初始化。   
  5.数组成员是不能在初始化列表里初始化的。
  6.不能给数组指定明显的初始化。  
这6条一起,说明了一个问题:C++里面是不能定义常量数组的!因为3和5的矛盾。

回复  |  举报

tianyashuibin2014-10-23 21:32

记住静态成员这样初始化:
C/C++ code

class A
{
public:
   static const int a[3];
};
 
const int A::a[3] = {1,2,3};

回复  |  举报
留言热议
请登录后留言。

登录 注册