Tôi đang thử nghiệm chương trình nhỏ này dưới Linux:
// foo.c
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char* argv[])
{
int n = system(argv[1]);
printf("%d\n", n);
return n;
}
Không có vấn đề gì được đưa vào dòng lệnh, một echo $?
luôn in 0, ví dụ:
$ ./foo anything
sh: anything: not found
32512
$ echo $?
0
Câu hỏi của tôi là: Tại sao không $?
có cùng giá trị với n
? Tôi cũng đã thử nghiệm chương trình theo Win32 và echo %errorlevel%
cho cùng một giá trị như n
. Cảm ơn!
Và có thể bạn chỉ sao chép hành vi khi 'hệ thống()' tham gia? (Giá trị âm được trả về, phải không? Đây có phải là định nghĩa trong Linux không?) –
Tôi chỉ thấy hành vi này với 'system()'. Nếu tôi thực thi './Anything' theo sau là' echo $? ', Đầu ra sẽ là 127. – wdscxsj