為什麼系統不返回主值? (Why system doesn't return main's value?)


問題描述

為什麼系統不返回主值? (Why system doesn't return main's value?)

[root@ test]$ cat return10.c
#include <stdio.h>
int main(int argc, char *argv[]){
    return 10;
}
[root@ test]$ perl -e 'print system("/path_to_return10")'
2560

I was expecting 10 but got 2560,why?


參考解法

方法 1:

as specified in the documentation for the system call in perl (http://perldoc.perl.org/functions/system.html):

  

The return value is the exit status of the program as returned by the   wait call. To get the actual exit value, shift right by eight (see   below).

indeed: 2560 >> 8 = 10

方法 2:

See $? in perldoc perlvar. 

You got 10 * 256 (return value = 10) + 0 * 128 (there was no core dump) + 0 (process wasn't killed by signal).

(by askerAdrien PlissonDallaylaen)

參考文件

  1. Why system doesn't return main's value? (CC BY-SA 3.0/4.0)

#system #perl






相關問題

asp.net c# sistem login (asp.net c# login system)

系統函數的彙編代碼(iPhone) (Assembly code to system functions (iPhone))

如何跟踪系統依賴關係? (How to track System Dependencies?)

使用 system() 甚至 passthru() 從 php 運行 python 腳本不會產生任何輸出。為什麼? (Running a python script from php with system( ) or even passthru( ) produces no output. Why?)

求解線性方程 (Solving a linear equation)

C++ 中的 System() 調用及其在編程中的作用 (System() calls in C++ and their roles in programming)

找不到傳遞給使用 Perl“系統”命令調用的程序的參數 (Cannot find argument passed to program called using Perl "system" command)

如何顯示所有用戶表中的所有列/字段? (How to display all columns/fields in all user tables?)

系統文件夾中的庫未加載正確的語言 (Libraries from system folder does not load correct language)

為什麼系統不返回主值? (Why system doesn't return main's value?)

通知未顯示,因為服務或警報管理器已被終止 (Notification not showing because service or alarm manager is killed off)

通過 C++ 調用系統不一致失敗 (Calling the system through C++ inconsistently fails)







留言討論