UNIX C 进程Part2】的更多相关文章

1.获取进程ID #include <unistd.h> pid_t getpid(void); //获取子进程id pid_t getppid(void);//获取父进程id 2.获取实际用户ID和实际用户组ID #include <unistd.h> uid_t getuid(void); uid_t getgid(void); 3.有效用户ID和有效组ID #include <unistd.h> uid_t geteuid(void); uid_t getegid…
问题描述:         Unix守护进程 问题解决:     Unix守护进程没有控制终端,终端名设置为问号(?),终端前台进程组ID设置(TPGID)为-1 守护进程编写规则:      (1)调用umask将文件模式创建屏蔽字设置为0,由继承得来的文件模式创建出屏蔽字可能会拒绝设置某些权限      (2)调用fork,然后使父进程退出.这样做实现了一下几点:第一,如果该守护进程是作为一条简单的shell命令启动的,那么父进程终止使得shell认为这条命令已经执行完毕.子进程继承了父进程…
在Linux/Unix系统中.每一个进程都有一个非负整型表示的唯一进程ID.尽管是唯一的.可是进程的ID能够重用.当一个进程终止后,其进程ID就能够再次使用了. 大多数Linux/Unix系统採用延迟重用的算法,使得赋予新建进程ID不同于近期终止进程所使用的ID,这主要是为了防止将新进程误觉得是使用同一ID的某个已终止的先前进程.本文讨论了Linux/Unix分配进程ID的方法以及源代码实现. 分配进程ID的方法 在大多数Linux/Unix系统中,生成一个进程ID方法是:从0開始依次连续分配,…
利用lsof去查看Unix/Linux进程打开了哪些文件 今天用了一下lsof,发现这个linux的小工具,功能非常强大而且好用. 我们可以方便的用它查看应用程序进程打开了哪些文件或者对于特定的一个文件,哪些进程打开了他 等等. 在类Unix系统中,几乎可以说"Everything is a file" : 管道是文件,网络套接字(Sockets)是文件,目录是文件,设备是文件...... 下面列出几个常用的应用作为备忘: 1)搜索被某一进程打开的相关文件: 比如查看java进程(PI…
原文: http://www.cnblogs.com/haimingwey/archive/2012/04/25/2470190.html 守护进程在Linux/Unix系统中有着广泛的应用.有时,开发人员也想把自己的程序变成守护进程.在创建一个守护进程的时候,要接触到子进程.进程组.会晤期.信号机制.文件.目录和控制终端等多个概念.因此守护进程还是比较复杂的,在这里详细地讨论Linux/Unix的守护进程的编写,总结出八条经验,并给出应用范例. 编程要点 1.屏蔽一些有关控制终端操作的信号.防…
转自 http://www.cnblogs.com/hjslovewcl/archive/2011/03/14/2314333.html 有三种不同的文件锁,这三种都是“咨询性”的,也就是说它们依靠程序之间的合作,所以一个项目中的所有程序封锁政策的一致是非常重要的,当你的程序需要和第三方软件共享文件时应该格外地小心.有些程序利用诸如 FIlENAME.lock 的文件锁文件,然后简单地测试此类文件是否存在.这种方法显然不太好,因为当产生文件的进程被杀后,锁文件依然存在,这样文件也许会被永久锁住.…
技术分享 启动新进程 stdlib.hintsystem(const char *string)whichequals to "sh -c string" 替换进程映像unistd.hchar**environ;intexecl(const char *path, const char *arg0, ...(char *)0);intexeclp(const char *file, const char *arg0, ...(char *)0);intexecle(const char…
学习的过程之前,先来了解下过程中的操作环境. main功能 过程总是开始main功能开始执行,我们编程,程序从main功能进行,它是原型例如,下面的: int main(int argc, char *[]argv); argc是命令行參数的数目.argv是指镇数组.即指向指针的指针,能够写代码測试一下: #include<stdio.h> int main(int argc, char *argv[]) {         int i;         for(i=0; i<argc;…
进程和守护进程 Processes and Daemons 进程(Processes) FreeBSD 是一个多任务操作系统. 这就意味着好像一次可以运行一个以上的程序. 每个占用一定时间运行的程序就叫 进程 (process). 你运行的每一个命令会至少启动一个新进程,还有很多一直运行着的系统进程, 用以维持系统的正常运作. 每个进程用来标识的一个编号就叫 进程ID(PID).而且,就像文件那样,每个进程也有所属用户和所属组. 所属用户和所属组使用在这方面:确定这个进程可以打开那些文件和那些设…
终止一个进程有很多方法(暂只说linux环境):前台运行的进程,如果没有提供退出功能,我们通常会Ctrl+C进行终止:后台或守护进程,如果也没有提供退出命令啥的,咱通常会kill掉:此外还有类似关机或重启之类的特殊情况,也会导致进程终止. 无论哪种方法,最终都是通过向进程传递信号量的方式进行终止.只是不同的方式发送的信号也不同:比如Ctrl+C发送的是SIGINT,kill和killall发送的是SIGTERM,kill -9发送的是SIGKILL,等等. 有些信号可以在程序中捕获,针对进行特殊…