`
runfeel
  • 浏览: 906749 次
文章分类
社区版块
存档分类
最新评论

linux c 下exit(0);与_exit(0);的区别

 
阅读更多
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
pid_t pid;
if((pid=fork())==-1)
    {
    printf("error");
    }
else if(pid==0)
{
printf("ok\n");
exit(0);
}
else
{
printf("parent process,output begin\n");
printf("hello word");
_exit(0);
}
}

调试后你会发现没有

hello word

exit是退出去先把内存中的数据输出到文件中,而_exit 这个直接退出,消除内存中的数据;

printf是标准行输出,遇到“\n”或者是写入的内存满了才会标准输出;

我们可以尝试在hello word 中加入很多i,假设输入2000个吧(关于行输出自行google),再次调试发现,会有 hello 等字符,这就是溢出了。

回到前面,为什么开始没有hello,虽然hello word 在_exit前,但是你查看汇编会发现,他只是讲数据存在内存中。没有讲数据真正输出。当我们把_exit去掉 hello word就能显示了。为什么呢?这个就是编译器自己加的了。


分享到:
评论

相关推荐

    进程退出控制exit

    在linux下通过C语言代码来描述进程退出exit、_exit、return之间的区别

    linux全志R16的linux系统编译的资料_20170502_1655.7z

    rm /home/wwt/linux_r16/lichee/out/sun8iw5p1/linux/common/buildroot/build/buildroot-config/zconf.tab.c make[1]:正在离开目录 `/home/wwt/linux_r16/lichee/buildroot/package/config' # # configuration ...

    C语言模拟实现Linux文件系统

    C语言模拟实现Linux文件系统 1、在内存中开辟一块空间来模拟文件系统的运行,不读写硬盘。 2、面向单用户、单任务,不考虑并发,不考虑文件属主、组等概念。 3、程序开始后,初始化并接收用户输入。若输入”enter”...

    softap_ap6212a0_tinav2.1_验证通过_旧版本的系统_20170915_1223没有外层目录.7z

    HOST_OS_EXTRA=Linux-3.13.0-24-generic-x86_64-with-Ubuntu-14.04-trusty HOST_BUILD_TYPE=release BUILD_ID=57513AA3 OUT_DIR= ============================================ rootroot@cm-System-Product...

    linux下的lcd驱动 源码

    源码 精炼 液晶屏驱动 linux下的 module_init(s3c2410fb_init); module_exit(s3c2410fb_cleanup); MODULE_AUTHOR("Arnaud Patard , " "Ben Dooks &lt;ben-linux@fluff.org&gt;"); MODULE_DESCRIPTION("Framebuffer ...

    lichee_20170502_1607_全志R16的linux系统编译需要改动的文件_使用parrotv1.1的内核_没有外层目录.7z

    rm /home/wwt/linux_r16/lichee/out/sun8iw5p1/linux/common/buildroot/build/buildroot-config/zconf.tab.c make[1]:正在离开目录 `/home/wwt/linux_r16/lichee/buildroot/package/config' # # configuration ...

    linux下自己用c语言编写的模拟shell

    1、应用UNIX的fork()等系统调用,编写一个c程序具有以下功能: a) 实现Shell的基本功能,包括有:打印提示符; 接受和分析命令行(滤去无效的空格、tab符号以及换行符等);执行命令(要有出错处理;输入exit...

    C语言课程设计仿Linux的文件管理系统

    利用c语言实现仿Linux的文件操作,包括: format-格式化; exit-安全退出·文件系统,保存信息; mkdir dirname :创建子目录; rmdir dirname :删除子目录. ls dirname :显示当前目录下信息. cd dirname :更改当前...

    linux驱动学习去开发入门

    Linux设备驱动程序学习(0)-Hello, world!模块 Linux设备驱动程序学习(0) -Hello, world!模块 一个学习Linux设备驱动程序都会碰到的第一个例程: #include &lt;linux/init.h&gt; #include &lt;linux/module.h&gt; ...

    Realtek WIFI驱动,适用于RTL8822CS

    Realtek WIFI驱动,适用于RTL8822CS,支持主线版本Linux内核,驱动版本:rtl88x2CS_WiFi_linux_v5.12.1.1-0-gf673ce3.20210125_COEX20200922-1e1e

    linux_c API函数大全

    LINUX C函数库API 1.字符测试篇 15 1.1 15 isalnum(测试字符是否为英文或数字) 15 1.2 15 isalpha (测试字符是否为英文字母) 15 1.3 16 isascii(测试字符是否为ASCII 码字符) 16 1.4 17 iscntrl(测试字符是否...

    Embedded Linux Driver Development

    嵌入式Linux驱动开发,英文版,极好的slides。例子精简,条理分明,对于Linux驱动开发者十分受用。 Headers specific to the Linux kernel: &lt;linux/xxx.h&gt; No access to the usual C library, we're doing kernel...

    【Linux】进程二 (PCB & fork/vfork & wait/waitpid & exit/_exit & exec函数族 & 环境变量)

    ·我们称为PCB,Linux操作系统下的PCB是:task struct 2、task_struct——PCB的一种 ·在Linux中描述进程的结构体叫做task_struct. ·task_struct是Linux内核的一种数据结构,它会被装载到RAM(内存)里包含着进程的...

    Linux FTP服务配置

    C:\Documents and Settings\Administrator&gt;ftp 192.168.0.125 Connected to 192.168.0.125. 220 (vsFTPd 2.0.5) User (192.168.0.125:(none)): xu 331 Please specify the password. Password: 230-welcomt to VSFTP...

    linux下的C链表程序

    面试前写的链表程序,比较简单,适合初学者了解链表的过程,...7.Exit 环境:linux ubuntu12.04 语言:C 清单: Start.c print.c print.h control.c control.h extern.h makfile 交流邮箱:shadowdestiny@163.com

    rt0:Linux i386和x86_64的最小C运行时

    rt0 在i386和x86_64上用于Linux的最小C运行时特征仅用202个SLOC C代码实现。 i386仅需9行GCC内联ASM,或者适用于x86_64的仅6行GCC内联ASM 小型运行时,仅提供argc , argv , envp , __environ , errno , _exit ...

    linux内核 0.11版本源码 带中文注释

    * linux/init/main.c * * (C) 1991 Linus Torvalds */ #define __LIBRARY__ // 定义该变量是为了包括定义在unistd.h 中的内嵌汇编代码等信息。 #include &lt;unistd.h&gt; // *.h 头文件所在的默认目录是include/,...

    清华大学Linux操作系统原理与应用

    附录D Linux编程基础(C语言环境) 233 D.1 Linux编程常识 233 D.1.1 相关标准(ANSI C、POSIX、SVID、XPG) 233 D.1.2 函数库和系统调用 234 D.1.3 在线文档(man、info、HOWTO) 235 D.1.4 C语言编程风格 237 D.2 ...

    linux系统编程之线程.zip

    Linux下由于实现方法导致进程、线程差别不是很大。 线程控制原语 pthread_self函数 获取线程ID。其作用对应进程中 getpid() 函数。 pthread_t pthread_self(void); 返回值:成功:0; 失败:无! 线程ID:pthread_...

    C语言TCP传输

    利用进程实现客户端与服务端,进行交互。//1.socket serverfd=socket(AF_INET,SOCK_STREAM,0); if(serverfd==-1) printf("1:%m\n"),exit(-1); printf("建立服务器socket成功!\n"); //2.bind sadr.sin_family=AF...

Global site tag (gtag.js) - Google Analytics