
linux/unix
wsllq334
这个作者很懒,什么都没留下…
展开
-
关于struct msghdr和struct cmsghdr
理解struct msghdr当我第一次看到他时,他看上去似乎是一个需要创建的巨大的结构。但是不要怕。其结构定义如下:struct msghdr { void *msg_name; socklen_t msg_namelen; struct iovec *msg_iov; size_t msg_iovlen;转载 2011-11-16 14:55:23 · 15561 阅读 · 1 评论 -
UNIX文件:硬链接和符号链接
UNIX目录中有2中类型的链接——硬链接和符号链接。 硬链接本身就是一个目录项,(比如文件名+索引节点号),可以将文件名与文件的位置关联起来;符号链接也称软链接,是指存储了一个字符串的文件。这个字符串可以在路径名解析的过程中,用于修改路径名。 ----------------------------------------------------转载 2012-01-04 23:17:37 · 518 阅读 · 0 评论 -
孤儿进程组和终端会话
孤儿进程: 即一个其父进程已经终止的进程。 孤儿进程由 init 进程“收养”,init 进程ID为1,因此被收养的孤儿进程的父进程便更新为1。孤儿进程组: 一个进程组中的所有进程的父进程要么是该进程组的一个进程,要么不是该进程组所在的会话中的进程。 一个进程组不是孤儿进程组的条件是,该组中有一个进程其父进程在属于同一个会话的另一个组中。GNU解释了为什么会提出孤儿进程组的概念转载 2012-01-04 19:59:36 · 390 阅读 · 0 评论 -
多线程与fork
前言:exce调用并不创建新进程,所以前后的进程ID并未改变,exec只是用一个全新的程序替换了当前进程的正文、数据、堆和栈段多线程程序里不准使用fork :为什么???UNIX上C++程序设计守则3准则3:多线程程序里不准使用fork在多线程程序里,在”自身以外的线程存在的状态”下一使用fork的话,就可能引起各种各样的问题.比较典型的例子就是,fork出来的子进程可转载 2012-01-02 10:36:43 · 447 阅读 · 0 评论 -
Linux线程同步之条件变量
与互斥锁不同,条件变量是用来等待而不是用来上锁的。条件变量用来自动阻塞一个线程,直到某特殊情况发生为止。通常条件变量和互斥锁同时使用。条件变量使我们可以睡眠等待某种条件出现。条件变量是利用线程间共享的全局变量进行同步的一种机制,主要包括两个动作:一个线程等待"条件变量的条件成立"而挂起;另一个线程使"条件成立"(给出条件成立信号)。条件的检测是在互斥锁的保护下进行的。如果一个条件为假,一个转载 2011-12-30 01:11:32 · 422 阅读 · 0 评论 -
IPC备忘录
一 看如下代码,有若干需要注意的地方 14 int CreateSem(key_t key,int value) 15 { 16 union semun sem; 17 sem_t semid; 18 sem.val=value; 19 20 semid=semget(key,1,IPC_CREAT|0666); 21 if(sem原创 2011-12-28 12:15:21 · 399 阅读 · 0 评论 -
Unix Programming之abort
决定写一下这个系列,仅当学习过程中的一个总结,无论涉及的内容或深或浅,是对是错,有机会希望以后能慢慢深化。abort函数原型:void abort(void) 函数说明:1)无返回值2)无视信号的阻塞和忽略并向进程发送SIGABRT信号3)若捕获SIGABRT而不调用exit等函数程序依然会异常终止4)abort使程序终止后,关闭打开的文件并flush小小测试代码:原创 2011-12-13 21:43:31 · 446 阅读 · 0 评论 -
linux重定向
基本概念 (这是理解后面的知识的前提,请务必理解) a、 I/O重定向通常与 FD有关,shell的FD通常为10个,即 0~9; b、 常用FD有3个,为0(stdin,标准输入)、1(stdout,标准输出)、2(stderr,标准错误输出),默认与keyboard、monitor有关; c、 用 < 来改变读进的数据信道(stdin),使之从指定的档案读进转载 2011-12-06 23:57:44 · 291 阅读 · 0 评论 -
getsockname与getpeername
getsockname与getpeername是返回套接口关联的本地协议地址和远程协议地址。int getsockname(int sockfd, struct sockaddr * localaddr, socken_t * addrlen);int getpeername(int sockfd, struct sockaddr * peeraddr, socken_t * ad转载 2011-11-26 09:19:26 · 2692 阅读 · 0 评论 -
网络编程中wait与waitpid的区别
问题: 一个unp中第五章的例子:有5个客户端几乎同时向服务器发送终止连接,这时在服务器端将几乎同时产生SIGCHILD信号,然而信号在内核中是不排队的,信号处理函数只执行一次(我的理解是5个信号几乎同时到达,当第一个信号被处理时,其他4个信号是未决的,当信号处理函数处理完第一个到达的信号后,由于没有产生信号,信号处理函数将不会被再次调用)。那么在目前情况下,父进程怎样才能捕获转载 2011-11-24 20:51:08 · 1519 阅读 · 0 评论 -
read/write,readn/writen
下面是read和write的函数原型#include ssize_t read(int fd, void *buf, size_t count); //count通常取sizeof(buf)返回值:若成功,返回读取的字节数(不一定是count),出错返回-1并设置errno,如果在调read之前已到达文件末尾,则这次read返回0。文件的当前读写位置向后移。#include转载 2011-11-23 15:19:04 · 943 阅读 · 0 评论 -
ubuntu su密码
ubuntu默认安装后root是没有密码的你要先运行sudo passwd设置密码然后可以sudo apt-get这样或者直接su输入密码 要退出root的话运行 exit logout原创 2011-12-07 00:54:46 · 718 阅读 · 0 评论