草庐IT

EXIT_SUCCESS

全部标签

c - 如何找到C程序的 "exit"

测试在32位x86Linux上进行。所以基本上我试图通过在汇编代码中插入检测指令来记录已执行的基本block的信息。我的策略是这样的:将一个已执行的基本block的索引写在一个globl数组中,当数组满(16M)时,将数组从内存刷新到磁盘。这是我的问题。当检测二进制文件的执行结束时,我需要将阵列刷新到磁盘,即使它没有达到16M边界。但是,我只是不知道在哪里可以找到assembly程序的导出。我试过这个:grepexit从目标汇编程序中,并在callexit指令之前刷新内存。但根据一些调试经验,objective-c程序,例如md5sum二进制文件,在执行完成时不会调用exit。在mai

linux - 为什么 _exit(0)(通过系统调用退出)阻止我接收任何标准输出内容?

我有一个Linuxx86-32GAS汇编程序这样终止:movl$1,%eaxmovl$0,%ebx#argumentfor_exitint$0x80当我这样退出时,程序正常运行,但如果我尝试读取标准输出输出,我什么也得不到(使用less或wc)。我尝试编译一个最小的C程序并比较strace输出。我发现的唯一区别是,GCC使C程序(intmain(){printf("donkey\n");})隐式退出exit_group(0)在strace输出中。我尝试修改我的ASM程序以使用callexit而不是原始系统调用退出。标准输出现在可以正常读取了。测试用例.datadouout:.strin

linux - 为什么 _exit(0)(通过系统调用退出)阻止我接收任何标准输出内容?

我有一个Linuxx86-32GAS汇编程序这样终止:movl$1,%eaxmovl$0,%ebx#argumentfor_exitint$0x80当我这样退出时,程序正常运行,但如果我尝试读取标准输出输出,我什么也得不到(使用less或wc)。我尝试编译一个最小的C程序并比较strace输出。我发现的唯一区别是,GCC使C程序(intmain(){printf("donkey\n");})隐式退出exit_group(0)在strace输出中。我尝试修改我的ASM程序以使用callexit而不是原始系统调用退出。标准输出现在可以正常读取了。测试用例.datadouout:.strin

clang: error: linker command failed with exit code 1 (use -v to see invocation)

在OCR项目调研过程发现一个开源工具gosseract,识别效果不错;按部就班准备环境,先mac环境安装tesseract(gosseract依赖):brewinstalltesseract$tesseract-vtesseract4.1.3leptonica-1.82.0libgif5.2.1:libjpeg9d:libpng1.6.37:libtiff4.3.0:zlib1.2.11:libwebp1.2.1:libopenjp22.4.0FoundAVX2FoundAVXFoundFMAFoundSSE第一次安装很顺利,成功。随着业务需求增加,需要进行语言训练,因此需要安装训练工具,选择

linux - exit() 和 exit_group() 有什么区别

exit()之间有什么区别?和exit_group().任何具有多个线程的进程都应该使用exit_group而不是exit?要回答这个问题你为什么问-我们有一个大约有四十个线程的进程。当一个线程被锁定时,我们会自动退出进程,然后重新启动进程。然后我们打印被锁定线程的回溯。我们想知道在这种情况下调用exit是否与exit_group有任何不同。来自文档:这个系统调用等同于exit(2),只是它不仅终止调用线程,而且终止调用进程的线程组中的所有线程-但是,有什么区别在退出进程和退出所有线程之间。不是退出进程==退出所有线程。 最佳答案

linux - exit() 和 exit_group() 有什么区别

exit()之间有什么区别?和exit_group().任何具有多个线程的进程都应该使用exit_group而不是exit?要回答这个问题你为什么问-我们有一个大约有四十个线程的进程。当一个线程被锁定时,我们会自动退出进程,然后重新启动进程。然后我们打印被锁定线程的回溯。我们想知道在这种情况下调用exit是否与exit_group有任何不同。来自文档:这个系统调用等同于exit(2),只是它不仅终止调用线程,而且终止调用进程的线程组中的所有线程-但是,有什么区别在退出进程和退出所有线程之间。不是退出进程==退出所有线程。 最佳答案

c - 更好地替代 C 中的 exit()、atexit()

我是C编程的新手。我曾经认为使用exit()是最干净的进程终止方式(因为它能够删除临时文件、关闭打开的文件、正常进程终止...),但是当我尝试manexit终端命令(Ubuntu16.04.5,gcc5.4.0)我看到了下面一行:Theexit()functionusesaglobalvariablethatisnotprotected,soitisnotthread-safe.之后,我尝试对exit()的更好替代进行一些研究(从一开始就改变我的编程行为)。在这样做的同时,我遇到了this问题中提到了exit()的副作用,建议正确使用atexit()来解决问题(至少部分解决)。有一些c

c - 更好地替代 C 中的 exit()、atexit()

我是C编程的新手。我曾经认为使用exit()是最干净的进程终止方式(因为它能够删除临时文件、关闭打开的文件、正常进程终止...),但是当我尝试manexit终端命令(Ubuntu16.04.5,gcc5.4.0)我看到了下面一行:Theexit()functionusesaglobalvariablethatisnotprotected,soitisnotthread-safe.之后,我尝试对exit()的更好替代进行一些研究(从一开始就改变我的编程行为)。在这样做的同时,我遇到了this问题中提到了exit()的副作用,建议正确使用atexit()来解决问题(至少部分解决)。有一些c

python - 如何在 python 中绕过 sys.exit() 的 0-255 范围限制?

在python中(在Linux系统上),我正在使用os.system()启动命令并检索返回代码。如果该返回码不同于0,我想让程序以相同的返回码退出。所以我写道:ret=os.system(cmd)ifret!=0:print"exitwithstatus%s"%retsys.exit(ret)当返回码小于256时,它工作正常,但当它大于255时,使用的退出码为0。如何让sys.exit()接受大于255的代码?编辑:限制实际上是255事实上,ret变量接收到256,但是sys.exit()没有使用它,所以程序返回0。当我手动启动cmd时,我看到它返回1,而不是256。

python - 如何在 python 中绕过 sys.exit() 的 0-255 范围限制?

在python中(在Linux系统上),我正在使用os.system()启动命令并检索返回代码。如果该返回码不同于0,我想让程序以相同的返回码退出。所以我写道:ret=os.system(cmd)ifret!=0:print"exitwithstatus%s"%retsys.exit(ret)当返回码小于256时,它工作正常,但当它大于255时,使用的退出码为0。如何让sys.exit()接受大于255的代码?编辑:限制实际上是255事实上,ret变量接收到256,但是sys.exit()没有使用它,所以程序返回0。当我手动启动cmd时,我看到它返回1,而不是256。