linux之Deamon进程创建及其进程exit,_exit,return之间的区别
chdir("/") 
umask(0)
int fd = open("/dev/console", O_RDWR);
#include <unistd.h>
int daemon(int nochdir, int noclose);
ret = daemon(0,0)
#include <unistd.h>
void _exit(int status);
#include <stdlib.h>
void exit(int status);
 
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
void foo()
{
fprintf(stderr,"foo says bye.\n");
}
void bar()
{
fprintf(stderr,"bar says bye.\n");
}
int main(int argc, char **argv)
{
atexit(foo);
atexit(bar);
fprintf(stdout,"Oops ... forgot a newline!");
sleep(2);
if (argc > 1 && strcmp(argv[1],"exit") == 0)
exit(0);
if (argc > 1 && strcmp(argv[1],"_exit") == 0)
_exit(0);
return 0;- }
manu@manu-hacks:exit$ ./test exit //调用exit结束,输出了缓冲区的字符
bar says bye.
foo says bye.
Oops ... forgot a newline!manu@manu-hacks:exit$ //调用return 输出了缓冲区字符
manu@manu-hacks:exit$
manu@manu-hacks:exit$ ./test
bar says bye.
foo says bye.
Oops ... forgot a newline!manu@manu-hacks:exit$ //直接调用_exit没有输出缓冲区的字符
manu@manu-hacks:exit$
manu@manu-hacks:exit$ ./test _exit
manu@manu-hacks:~/code/self/c/exit$
linux之Deamon进程创建及其进程exit,_exit,return之间的区别的更多相关文章
- ASP.NET Core Linux下为 dotnet  创建守护进程(必备知识)
		前言 在上篇文章中介绍了如何在 Docker 容器中部署我们的 asp.net core 应用程序,本篇主要是怎么样为我们在 Linux 或者 macOs 中部署的 dotnet 程序创建一个守护进程 ... 
- ASP.ENT Core Linux 下 为 donet创建守护进程(转载)
		原文地址:http://www.cnblogs.com/savorboard/p/dotnetcore-supervisor.html 前言 在上篇文章中介绍了如何在 Docker 容器中部署我们的 ... 
- 进程基本-进程创建,僵尸进程,exec系列函数
		Linux系统中,进程的执行模式划分为用户模式和内核模式,当进程运行于用户空间时属于用户模式,如果在用户程序运行过程中出现系统调用或者发生中断事件,就要运行操作系统(即核心)程序,进程的运行模式就变为 ... 
- Win32进程创建、进程快照、进程终止用例
		进程创建: 1 #include <windows.h> #include <stdio.h> int main() { // 创建打开系统自带记事本进程 STARTUPINF ... 
- linux fork函数与vfork函数,exit,_exit区别
		man vfork: NAME vfork - create a child process and block parent SYNOPSIS #include <sys/types.h> ... 
- abort exit _exit return的区别
		exit()函数导致子进程的正常退出,并且参数status&这个值将被返回给父进程.exit()应该是库函数.exit()函数其实是对_exit()函数的一种封装(库函数就是对系统调用的一种封 ... 
- Linux编程中的坑——C++中exit和return的区别
		今天遇到一个坑,折腾了一天才把这个坑填上,情况是这样的: 写了段代码,在main()函数中创建一个分离线程,结果这个线程什么都没干就直接挂掉了,代码长这样: int main() { 创建一个分离线程 ... 
- exit()和return语句的区别
		(1)exit用于结束正在运行的程序,exit函数将参数是返回给OS.而return是返回函数值并退出函数. (2)return是语言级别的,它表示了调用堆栈的返回:而exit是系统调用级别的,它表示 ... 
- Linux软件安装包中devel与非devel包之间的区别
		带devel(develop)的包,俗称开发包.功能上与普通包相同,但体积更大使用rpm -qi看看这两类包的区别: # rpm -qi glibc-devel-2.12-1.149.el6.x86_ ... 
随机推荐
- VueX源码分析(1)
			VueX源码分析(1) 文件架构如下 /module /plugins helpers.js index.esm.js index.js store.js util.js util.js 先从最简单的 ... 
- bash编程之循环控制:
			bash编程之循环控制: for varName in LIST; do 循环体 done while CONDITION; do 循环体 done until CONDITION; do 循 ... 
- 【数学  思维题】HDU4473Exam
			过程很美妙啊 Problem Description Rikka is a high school girl suffering seriously from Chūnibyō (the age of ... 
- 如何用纯 CSS 和 D3 创作一艘遨游太空的宇宙飞船
			效果预览 在线演示 按下右侧的"点击预览"按钮可以在当前页面预览,点击链接可以全屏预览. https://codepen.io/comehope/pen/oMqNmv 可交互视频 ... 
- Python基础——集合(set)
			集合可以去除掉列表中重复的元素. 创建 list1=[123,123,456,789] list1=set(list1) list1 set1=set() type(set1) set1=set([1 ... 
- python-闭包函数和装饰器
			目录 闭包函数 什么是闭包? 两种为函数传参的方式 使用参数的形式 包给函数 闭包函数的应用 闭包的意义: 装饰器 无参装饰器 什么是装饰器 为什么要用装饰器 怎么用装饰器 完善装饰器 闭包函数 什么 ... 
- 笔记-python-*号解包
			笔记-python-*号解包 在码代码时发现*号可以这样使用: str = ["abcd", "abce", "abcf"]st = &qu ... 
- 金阳光Android自动化测试第一季
			第一季:http://www.chuanke.com/v1983382-106000-218422.html 第一节:Android自动化预备课程基础(上) 1. 基于坐标点触屏:monkey ... 
- 一个通用的分页存储过程实现-SqlServer(附上sql源码,一键执行即刻搭建运行环境)
			使用前提 查询表必须有ID字段,且该字段不能重复,建议为自增主键 背景 如果使用ADO.NET进行开发,在查询分页数据的时候一般都是使用分页存储过程来实现的,本文提供一种通用的分页存储过程,只需要传入 ... 
- 记一次WMS的系统改造(1)-分析问题
			海外落地中的困境 目前面临主要的问题是"人",仓储系统主要辅助仓储人员进行生产,所以人变了其实一切就都已经变了,系统在海外面临最大的问题就是人变了. 这套软件是在国内的运营体系 ... 
