相关疑难解决方法(0)

在退出()状态下使用C over over除以256的WEXITSTATUS宏有什么好处?

我正在为大学做练习,我必须在退出时返回一个值,这个值实际上是一些东西.这可能高于255(exit()无法处理)但是老师建议使用测试数据,其中计数永远不会高于该值.

毕竟,我需要处理这个计数值,退出状态,我通过使用waitpid()在主进程中得到了这个值.令我惊讶的是,如果子进程返回1,则主进程中的"实际"值为256,2为512,依此类推......

我需要打印这个值,所以我简单地将它除以256并完成了.但是,如果我使用WEXITSTATUS()宏,我也会按照我想要的方式得到这个值...

我查看了C源代码,这是我发现的:

#define __WEXITSTATUS(status) (((status) & 0xff00) >> 8)
Run Code Online (Sandbox Code Playgroud)

我理解这里发生了什么,例如,二进制512是10 0000 0000,右移8'将得到00 0000 0010,即十进制2.在这个宏中我不明白的是&运算符和0xff00似乎是一个随机数的事实(它可能不是,它来自哪里?).这究竟是做什么的,为什么宏中有"&0xff00"?它不会有效吗?

在这个主题中真正的问题是,在我的代码中将此宏称为除以256是一回事吗?

c system-calls exit

12
推荐指数
1
解决办法
1万
查看次数

在C++中返回system()函数调用的值,用于运行Python程序

我正在Linux上使用代码来system()调用运行python程序.我对这个函数调用返回的值感兴趣,以了解python程序执行的方式.

到目前为止,我找到了3个结果:

  • 当python进程成功完成时,system()返回的值为0

  • 当python进程在执行中(使用kill -9 pid)被终止时,system()返回的值为9

  • 当python进程因参数不正确而自行失败时,system()返回的值为512

这与我读过的关于system()函数的内容不符.

此外,被调用的python程序的代码显示它sys.exit(2)在遇到任何错误时以及sys.exit(0)执行成功完成时退出.

谁能说这两个人?我是以错误的方式解释返回值吗?是否涉及一些Linux处理,它接受sys.exit()python程序函数的参数并返回system()基于它的值?

c++ python linux system

9
推荐指数
1
解决办法
2万
查看次数

标签 统计

c ×1

c++ ×1

exit ×1

linux ×1

python ×1

system ×1

system-calls ×1