unix_c++

来源:互联网 发布:手机淘宝如何撤销差评 编辑:程序博客网 时间:2024/05/08 09:52

可以通过
int main(int argc,char* argv[],char* envp[]);
envp即为所有的环境变量
查看环境变量env
查看id id
可以通过getenv来获得系统的变量
getuid获得当前用户的id号
setuid修改当前程序运行的id号(必须有权限)
finger命令用于查看用户登陆的状况
查找unix中密码存放文件放在etc/passwd中
pstack查看进程的堆栈
使用exec来执行一个程序
通过exit来退出一个进程

在需要退出程序的时候,要退出一些资源,比如文件的连接关闭,网络连接等
使用_exit的优先级比exit(0)要高,只要定义了前者,则后者不会被调用
环境变量也放在全局数据区
进程间如何进行通信,使一个进程能够使用到另一个进程的数据区
使用fork函数来创建一个于当前进程运行一摸一样的进程
父进程返回的fork为子进程的进程号,而子进程则返回为0;
父进程不能将子进程挂起,这种方法属于特权处理
service把特权处理的函数进行了包装,这样就使得普通程序,进程就可以调用该函数来调用特权函数,(nt都区分了特权函数以及普通函数的调用)
在文件共享处理中父进程与子进程之间需要通过if语句判断做同步操作,等到某一个子进程退出了,则父进程就往下走
wait函数只对父进程有效
system函数用于创建一个新的进程,程序运行,而exec则是将当前进程的资源利用,得以运行。
很多函数中带有一个参数,字符或整数指针都用于存放
system就相当于一下函数的组合 fork()+exec()+wait()
fork()是一个系统调用
使用设置位则无论用户是以何种身份登陆的,都以该文件的权属用户进行运行该程序,仅可以通过root用户来进行修改设置位,使用了设置位就可以调用系统函数了。

可以使用轮询使得多个进程之间进行通讯,但是过于浪费资源可以使用一个进程sleep等到另一个进程发消息给该进程则唤醒该进程,执行任务
signal handler:
void (*fp)(int);
signal(int,fp)
typedef void (*FP)(int)
void func1();
void func2();
signal(sigint,func1);
signal(sigint func2);return func1
可重入函数不要使用全局变量
不要在可重入函数中new以及delete,malloc和free
pause函数受到一个信号就不等待了
所有系统调用都不为你的指针分配空间
在程序中加了一个#include <errno.h> 中有一个errno来显示错误的原因,并有一个perror来打印出错误的原因。
标准c函数会帮你分配内存空间
alarm函数设一次就调一次
忽略和屏蔽是不一样的,前者完全不处理信号,后者再之后会进行处理信号
在system函数所调用的进程会忽略到sigint以及sigquit信号,阻塞调用sigchld
cmd后面跟d都有可能是daemon

share memory主要用于驱动设备
fifo以及socket用的都比较多
管道是单向的,如果实现双向通讯则可以创建两根管道
pipe函数创建管道,而且管道只能在父类与子类之间可以创建
使用命名管道可以使不相同的进程之间可以进行通讯
信号量的作用就是整个操作系统范围之内的环境变量
int semget(key_t key, int nsems, int semflg);
设置key就是key每个进程都使用该key来获得信号量,nsems用来设置可以当地是多大的数组
消息队列中的消息可以随即的取,而不需要顺序取
msg中的第一个参数如果定义为IPC_PRIVATE则只有有关系的进程采能拿到该消息
消息队列中妖用到的函数:msgctl,msgsnd,msgrcv等
查看当前消息队列ipcs,删除消息ipcrm
memory mapping通过一个文件 来进行共享内存的实现
堵塞的read,write方法,write的时候,必须有进程再read,read的时候必须有write的方法去实现
如果一个进程只以读的方式打开,那程序则会一直堵塞的方式停着,等待其他进程去写,如果是以读写方式打开的话,那么该进程再写好之后,程序其他不作任何处理,则进程就结束,因为操作系统认为,你有写和读的权利则肯定已经读到了,故关闭,如果用堵塞式的方式则进程会一直停着等待其他进程的执行

消息在程序退出之后,消息队列仍然存在,但是管道则在进程退出之后,则没有了
从程序中得到一个唯一的key,使用ftok();

Ip当前进程指针
sp当前栈指针

要想执行unix的线程,则在编译的时候加上如下语句:如:g++ abc.cc -lpthread(linux已经默认的装上了该库)
通过pthread_join来获取线程的返回值,会等待进程的结束,然是托的进程则不存在先前的逻辑,sleep函数对进程是有影响的,比如你在线程中sleep但这同时也影响到了进程本身
mesg 可以查看当前消息unix是否被打开

 


{

如何在unix快速的翻页,(没有办法)
pos是什么?信号?
三组rwx各代表什么?
chown怎么使用(可以使用设置位)
typedef一直搞不清怎么使的
sigset 和 signal调用有什么区别,不都是设置信号的吗?
消息队列如何进行创建?
如何使一个进程等待另外一个进程的执行之后再去执行

 

 

 

}

 

原创粉丝点击